hallo forum,
wie programmiert man folgendes:
alle features einer featureclass auswählen, kopieren und in eine featureclass einer anderen geodatabase einfügen.
weiss jemand hilfe oder einen link auf einen entsprechenden beispielscode?
vielen dank!
martin
wie programmiert man folgendes:
alle features einer featureclass auswählen, kopieren und in eine featureclass einer anderen geodatabase einfügen.
weiss jemand hilfe oder einen link auf einen entsprechenden beispielscode?
vielen dank!
martin
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von anderer Gast am Mo., 29.05.2006 - 13:56
PermalinkGespeichert von Gast am Mo., 29.05.2006 - 14:37
Permalinkstatt exportieren in eine neue fc muss ich die features in eine bestehende fc einfügen, und das über eine schleife letzlich mehrfach aus verschiedenen databases.
wie könnte das gehen?
gruß martin
Gespeichert von anderer Gast am Mo., 29.05.2006 - 15:26
PermalinkMach dir eine SearchCursor auf Basis der Quell-FeatureClass, einen InsertCursor für die Ziel-FeatureClass und einen FeatureBuffer ebenfalls auf Basis der Ziel-FeatureClass. Dann eine Schleife über den SearchCursor, für jeden Datensatz den FeatureBuffer bestücken (mit einer Schleife über alle Felder) und InsertFeature aufrufen. Fertig.
Gespeichert von beschti am Do., 08.06.2006 - 14:57
Permalink"gast" ist jetzt "beschti"...
vielen dank für die hilfe, das scheint mir genau richtig.
da ich aber noch so ein vba-grünschnabel bin...: gibt es irgendwo einen beispielcode für ungefähr das, was du da beschreibst, anhand dessen ich das prozedere verstehen und lernen kann?
:-) vielen dank!
martin
Gespeichert von uwelangehh am Do., 08.06.2006 - 16:27
Permalinkzwei Samples, die du auch in der Hilfe zu ArcObjecvts findest, sollten dir weiterhelfen. Sie entsprechen in etwa den Hinweisen von anderer Gast:
1. Inserting Features into a Geodatabase
2. Insert features using an insert cursor
Gruß und viel Erfolg
Uwe
Gespeichert von anderer Gast am Do., 08.06.2006 - 16:50
PermalinkMal angenommen dein Quelllayer ist der erste in der Map und dein Ziellayer ist der zweite. Beide FeatureClasses haben eine identische Struktur. Dann geht's etwa so:
Private Sub test()
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pFLayerSource As IFeatureLayer
Dim pFLayerTarget As IFeatureLayer
Dim pFClassSource As IFeatureClass
Dim pFClassTarget As IFeatureClass
Set pFLayerSource = pMxDoc.FocusMap.Layer(0)
Set pFLayerTarget = pMxDoc.FocusMap.Layer(1)
Set pFClassSource = pFLayerSource.FeatureClass
Set pFClassTarget = pFLayerTarget.FeatureClass
Dim pSearchCursor As IFeatureCursor
Set pSearchCursor = pFClassSource.Search(Nothing, True)
Dim pInsertCursor As IFeatureCursor
Set pInsertCursor = pFClassTarget.Insert(False)
Dim pFeatureBuffer As IFeatureBuffer
Set pFeatureBuffer = pFClassTarget.CreateFeatureBuffer
Dim pFeatureSource As IFeature
Set pFeatureSource = pSearchCursor.NextFeature
Dim i As Long
Dim pField As IField
Dim pFields As IFields
Set pFields = pFClassSource.Fields
Do Until pFeatureSource Is Nothing
For i = 0 To pFields.FieldCount - 1
Set pField = pFields.Field(i)
If pField.Type = esriFieldTypeOID Then
'nichts machen
ElseIf pField.Type = esriFieldTypeGeometry Then
Set pFeatureBuffer.Shape = pFeatureSource.Shape
Else
pFeatureBuffer.Value(i) = pFeatureSource.Value(i)
End If
Next i
pInsertCursor.InsertFeature pFeatureBuffer
Set pFeatureSource = pSearchCursor.NextFeature
Loop