Benutze dieses „Image Catalog Creator“ Programm für meine Bildkataloge,
habe es auf der http://arcscripts.esri.com/details.asp?dbid=13292 gefunden.
Hier mit werden aus allen Rasterdaten die sich in dem Ordner befinden ein Bildkatalog erstellt,
was ich möchte ist das ich die Rasterdaten aus dem Ordner selbst auswählen möchte,
und nur aus den Ausgewählten Daten ein Bildkatalog erstellt wird.
Bitte schaut euch das Programm mal an, hätte gerne Screenshot erstellt, leider weis ich nicht
wie man Bilder hier angezeigt bekommt.
In diesem Programm gibt es ein Form in dem ein FileListBox erstellt ist, müsste eine
Möglichkeit geben die Rasterdaten von dort aus zu markieren.
hier ein Auszug aus dem VB Code:
Private Sub DirListBox1_Change()
DirListBox1.Path = drvLetter
fileDirList.Path = DirListBox1.Path
End Sub
Private Sub fileDirList_Click()
End Sub
Private Sub cmdGo_Click()
Dim strName As String
Dim strLength As Integer
Dim featType As esriGeometryType
Dim pFeatureLayer As IFeatureLayer
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim orglength As Integer
Dim curpos As Integer
Dim newlength As Integer
Dim pRasterCatalogtable As IRasterCatalogTable
Dim pRasterCatalogLayer As IRasterCatalogLayer
Dim vStrings
Dim i As Integer
Dim pRasterProps As IRasterProps
Dim pRasterSR As ISpatialReference
Set pMxDoc = g_pApp.Document
Set pMap = pMxDoc.FocusMap
If fileDirList.ListCount = 0 Then
MsgBox "No raster data in the file!", vbInformation, "Ok not acceptable"
Exit Sub
End If
vStrings = Split(txtCatalogPath.Text, "\")
strName = vStrings(UBound(vStrings))
'Create the dbf file to store values
Set Catalog_Table = createDBF(strName, PathName)
'dbase table
Get_Raster_Datasets (DirListBox1.Path)
Set pRasterCatalogtable = New RasterCatalogTable
Set pRasterCatalogtable.Table = Catalog_Table
pRasterCatalogtable.Update
Set pRasterCatalogLayer = New RasterCatalogLayer
pRasterCatalogLayer.Create pRasterCatalogtable
pMap.AddLayer pRasterCatalogLayer
pMxDoc.UpdateContents
Me.Visible = False
Set Catalog_Table = Nothing
pMxDoc.UpdateContents
pMxDoc.ActiveView.Refresh
Exit Sub
Public Sub Get_Raster_Datasets(sDir As String)
'get all the rasters from a directory
Dim pWsFact As IWorkspaceFactory
Dim pWs As IWorkspace
Dim pEnumDs As IEnumDataset
Dim sName As String
Dim vStrings
On Error GoTo error_h
'Get input workspace
Set pWsFact = New RasterWorkspaceFactory
Set pWs = pWsFact.OpenFromFile(sDir, 0)
'Get all the raster datasets of the input workspace
Set pEnumDs = pWs.Datasets(esriDTRasterDataset)
'Extract directory basename
vStrings = Split(sDir, "\")
sName = vStrings(UBound(vStrings))
Call Put_In_Values(pEnumDs)
frmBildkatalog.MousePointer = vbDefault
GoTo cleanup
error_h:
MsgBox Err.Description
cleanup:
Set pWsFact = Nothing
Set pWs = Nothing
Set pEnumDs = Nothing
End Sub
Jetzt schon mal Dank für eure Hilfe
gruß Susan
habe es auf der http://arcscripts.esri.com/details.asp?dbid=13292 gefunden.
Hier mit werden aus allen Rasterdaten die sich in dem Ordner befinden ein Bildkatalog erstellt,
was ich möchte ist das ich die Rasterdaten aus dem Ordner selbst auswählen möchte,
und nur aus den Ausgewählten Daten ein Bildkatalog erstellt wird.
Bitte schaut euch das Programm mal an, hätte gerne Screenshot erstellt, leider weis ich nicht
wie man Bilder hier angezeigt bekommt.
In diesem Programm gibt es ein Form in dem ein FileListBox erstellt ist, müsste eine
Möglichkeit geben die Rasterdaten von dort aus zu markieren.
hier ein Auszug aus dem VB Code:
Private Sub DirListBox1_Change()
DirListBox1.Path = drvLetter
fileDirList.Path = DirListBox1.Path
End Sub
Private Sub fileDirList_Click()
End Sub
Private Sub cmdGo_Click()
Dim strName As String
Dim strLength As Integer
Dim featType As esriGeometryType
Dim pFeatureLayer As IFeatureLayer
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim orglength As Integer
Dim curpos As Integer
Dim newlength As Integer
Dim pRasterCatalogtable As IRasterCatalogTable
Dim pRasterCatalogLayer As IRasterCatalogLayer
Dim vStrings
Dim i As Integer
Dim pRasterProps As IRasterProps
Dim pRasterSR As ISpatialReference
Set pMxDoc = g_pApp.Document
Set pMap = pMxDoc.FocusMap
If fileDirList.ListCount = 0 Then
MsgBox "No raster data in the file!", vbInformation, "Ok not acceptable"
Exit Sub
End If
vStrings = Split(txtCatalogPath.Text, "\")
strName = vStrings(UBound(vStrings))
'Create the dbf file to store values
Set Catalog_Table = createDBF(strName, PathName)
'dbase table
Get_Raster_Datasets (DirListBox1.Path)
Set pRasterCatalogtable = New RasterCatalogTable
Set pRasterCatalogtable.Table = Catalog_Table
pRasterCatalogtable.Update
Set pRasterCatalogLayer = New RasterCatalogLayer
pRasterCatalogLayer.Create pRasterCatalogtable
pMap.AddLayer pRasterCatalogLayer
pMxDoc.UpdateContents
Me.Visible = False
Set Catalog_Table = Nothing
pMxDoc.UpdateContents
pMxDoc.ActiveView.Refresh
Exit Sub
Public Sub Get_Raster_Datasets(sDir As String)
'get all the rasters from a directory
Dim pWsFact As IWorkspaceFactory
Dim pWs As IWorkspace
Dim pEnumDs As IEnumDataset
Dim sName As String
Dim vStrings
On Error GoTo error_h
'Get input workspace
Set pWsFact = New RasterWorkspaceFactory
Set pWs = pWsFact.OpenFromFile(sDir, 0)
'Get all the raster datasets of the input workspace
Set pEnumDs = pWs.Datasets(esriDTRasterDataset)
'Extract directory basename
vStrings = Split(sDir, "\")
sName = vStrings(UBound(vStrings))
Call Put_In_Values(pEnumDs)
frmBildkatalog.MousePointer = vbDefault
GoTo cleanup
error_h:
MsgBox Err.Description
cleanup:
Set pWsFact = Nothing
Set pWs = Nothing
Set pEnumDs = Nothing
End Sub
Jetzt schon mal Dank für eure Hilfe
gruß Susan
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von uwelangehh am Mi., 09.02.2005 - 20:48
Permalinkeine vollstaendige Antwort habe ich nicht. Allerdings solltest du lieber anstelle der klassischen VB-FileListBox einen ArcView-Dateidialog verwenden: GxDialog. Dieser laesst sich so definieren, dass du lediglich Raster auswaehlen kannst. Als Rueckgabewert bekommst du eine Variable, die pEnumDataset in deinem Modul entspricht.
Abschliessende Frage habe ich noch:
Wie sieht denn die Prozedur Put_in_values aus?
Gruss
Uwe(dot)Lange(at)DB-GIS.de
Gespeichert von Gast am Do., 10.02.2005 - 09:10
PermalinkDas komplette Programm kann man auf der Seite http://arcscripts.esri.com/details.asp?dbid=13292
runterladen.
Das "FileListBox" habe so eingestellt dass ich nur die Rasterdaten sichtbar sind und auf multiselect eingestellt.
jetzt müsst ich die irgend wie die Selektion übergeben.
Hier ist der Code für "Put_in_values"
Private Sub Put_In_Values(pEnumDs As IEnumDataset)
Dim pTable As ITable
Dim pRasterDs As IRasterDataset
Dim pds As IGeoDataset
Dim pRow As IRow
Dim pCursor As ICursor
Dim pRaster As IRaster
Dim pRasterProps As IRasterProps
Dim pRasterSR As ISpatialReference
Set pTable = frmBildkatalog.Catalog_Table
Set pCursor = pTable.Insert(True)
Set pRow = pTable.CreateRowBuffer
Set pRasterDs = pEnumDs.Next
Set pRaster = pRasterDs.CreateDefaultRaster
Set pRasterProps = pRaster
Do While Not pRasterDs Is Nothing
Set pds = pRasterDs
pRow.Value(1) = frmBildkatalog.counter + 1
pRow.Value(2) = pRasterDs.CompleteName
pRow.Value(3) = pds.Extent.XMin
pRow.Value(4) = pds.Extent.YMin
pRow.Value(5) = pds.Extent.XMax
pRow.Value(6) = pds.Extent.YMax
pCursor.InsertRow pRow
Set pRasterDs = pEnumDs.Next
Loop
End Sub
Gruss Susan
Gespeichert von uwelangehh am Do., 10.02.2005 - 19:13
Permalinkauf die selektierten Dateien in der FileListBox greifst du zu mit:
' Schleife ueber alle Dateien
For i = 1 To lstFiles.ListCount
' Ist die Datei selektiert?
If lstFiles.Selected(i - 1) Then
:
:
Wenn du die Dateinamen und den Pfad hast, musst du diese nur noch als Raster-Layer hinzufuegen.
Viel Erfolg und Gruss
Uwe(dot)Lange(at)DB-GIS.de
ArcObjects-Forum bei DB-GIS
Gespeichert von KEngelberg am Do., 10.02.2005 - 20:10
PermalinkIch nehme mal an, dass Dein Zielkataloge schon irgendwie einen zusammenhängenden Bereich abdecken sollte, z.B. den grade dargestellten Ausschnitt.
Könntest Du nicht einmalig den Gesamtkatalog erstellen und dann einen Ausschnitt des Kataloges aus dem gewünschten Bereich aufgrund von Xmin, Ymin, Xmax, Ymax selektieren und nur noch den Katalogteil kopieren? Auf die Art habe ich unter AV3x schon diverse qkm in einem einzigen Katalog verwaltet, der automatisch beim Ausschnittwechsel angepasst wurde. Hat ausserdem noch den Vorteil, dass die häufig gewünschte in Unterordner untergliederte Pfadstruktur umfangreichen Bildmaterials beibehalten werden kann.
Klaus