Hallo Leute,
möchte gerne wissen wie man mit VBA ein neues FeatureClass erzeugt,
kann mir da jemand weiter helfen.
mfg
Susan
möchte gerne wissen wie man mit VBA ein neues FeatureClass erzeugt,
kann mir da jemand weiter helfen.
mfg
Susan
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Mi., 29.09.2004 - 12:26
PermalinkGespeichert von Gast am Mi., 29.09.2004 - 14:33
Permalinkhabe diesen kode gefunden,
wie kann ich denn damit ein neues
FeatureClass in einer Geodatabase erstellen,ich möchte kein shape erstellen,kann mir jemand weiter helfen?
mfg
Susan
Public Sub CreateShapefile()
Dim strFolder As String
Dim strName As String
Const strShapeFieldName As String = "Shape"
Dim pGxDialog As IGxDialog
Dim pGxObjectFilter As IGxObjectFilter
Dim pGxObj As IGxObject
'Get new filename and path from file dialog
Set pGxDialog = New GxDialog
Set pGxObjectFilter = New GxFilterGeoDatasets
pGxDialog.AllowMultiSelect = False
Set pGxDialog.ObjectFilter = pGxObjectFilter
pGxDialog.Title = "Shape Speichern unter:"
pGxDialog.Name = "Test"
If pGxDialog.DoModalSave(0) Then
Set pGxObj = pGxDialog.FinalLocation
End If
' If strFolder = "" Then Exit Sub
strFolder = pGxObj.FullName
strName = pGxDialog.Name
Debug.Print strFolder
Dim pFWS As IFeatureWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pFWS = pWorkspaceFactory.OpenFromFile(strFolder, 0)
' Set up a simple fields collection
Dim pFields As IFields
Dim pFieldsEdit As IFieldsEdit
Set pFields = New esriCore.Fields
Set pFieldsEdit = pFields
Dim pField As IField
Dim pFieldEdit As IFieldEdit
' Make the shape field
' it will need a geometry definition, with a spatial reference
Set pField = New esriCore.field
Set pFieldEdit = pField
pFieldEdit.Name = strShapeFieldName
pFieldEdit.Type = esriFieldTypeGeometry
Dim pGeomDef As IGeometryDef
Dim pGeomDefEdit As IGeometryDefEdit
Set pGeomDef = New GeometryDef
Set pGeomDefEdit = pGeomDef
With pGeomDefEdit
.GeometryType = esriGeometryPolygon
Set .SpatialReference = New UnknownCoordinateSystem
End With
Set pFieldEdit.GeometryDef = pGeomDef
pFieldsEdit.AddField pField
' Add another miscellaneous text field
Set pField = New esriCore.field
Set pFieldEdit = pField
With pFieldEdit
.Length = 10
.Name = "Neue_ID"
.Type = esriFieldTypeSingle
End With
pFieldsEdit.AddField pField
' Create the shapefile
' (some parameters apply to geodatabase options and can be defaulted as Nothing)
Dim pFeatClass As IFeatureClass
Set pFeatClass = pFWS.CreateFeatureClass(strName, pFields, Nothing, _
Nothing, esriFTSimple, strShapeFieldName, "")
' 'Add the output layer (clipped features) to the map
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Set pMxDoc = ThisDocument
Set pMap = pMxDoc.FocusMap
Dim pFeatLayer As IFeatureLayer
Set pFeatLayer = New FeatureLayer
Set pFeatLayer.featureclass = pFeatClass
pFeatLayer.Name = pFeatClass.AliasName
pMxDoc.FocusMap.AddLayer pFeatLayer
End Sub
Gespeichert von Gast am Mi., 29.09.2004 - 17:53
PermalinkGespeichert von Gast am Mi., 29.09.2004 - 20:29
Permalinkin der Hilfe zu ArcObjects gibt es ein Sample zum Erstellen einer neuen Feature Class in einer Geodatabase. Siehe auch arcobjectsonline.esri.com:
http://arcobjectsonline.esri.com/ArcObjectsOnline/Samples/Geodatabase/ Creating%20Data/CreateNewPersonalGeodatabaseVB.htm
Viel Erfolg damit und
schoenen Gruss
U. Lange
DB-GIS.de
Gespeichert von Gast am Mi., 29.09.2004 - 20:39
Permalinkder obige Link beschreibt ein Sample zum Erstelen einer Geodatabase ueber VBA. Um darin eine neue Feature class zu erstellen benoetigt man folgenden Code:
http://arcobjectsonline.esri.com/ArcObjectsOnline/Samples/Geodatabase/ Creating%20Data/CreateDatasetFeatureclass.htm
Gruss
U. Lange
Gespeichert von Gast am Do., 30.09.2004 - 10:39
PermalinkIch habe das gemacht was du geschrieben hast. Leider bekomme ich eine Fehlermeldung. Hier an dieser Stelle.
Set pFeatClass = pFWS.CreateFeatureClass(strName, pFields, Nothing, _
Nothing, esriFTSimple, strShapeFieldName, "")
könntes du das mal prüfen?
mfg
Susan
Gespeichert von Gast am Do., 30.09.2004 - 10:56
PermalinkGespeichert von Gast am Do., 30.09.2004 - 11:09
PermalinkAllgemeiner Funktionsfehler
Gespeichert von Gast am Do., 30.09.2004 - 12:49
PermalinkDer Fehler wird auch hier
http://forums.esri.com/Thread.asp?c=93&f=992&t=75909#201845
diskutiert.
Gespeichert von Gast am Do., 30.09.2004 - 12:53
PermalinkGespeichert von Gast am Do., 30.09.2004 - 14:05
Permalinkleider läuft das Programm trotzdem nicht:-( hab alle Veränderungen durch genommen und mir auch die Links angeschaut.
Bin zum Entschluss gekommen das Programm in diesem Link zu benutzen.
http://arcobjectsonline.esri.com/ArcObjectsOnline/Samples/Geodatabase/ Creating%20Data/CreateDatasetFeatureclass.htm
Aber leider ist es in einer Funktion,
was nicht so ohne weiteres läuft.
kann mir jemand sagen wie ich daraus eine "Public Sub" Macro erstelle.
danke schon mal an alle
mfg
Susan
Gespeichert von uwelangehh am Fr., 01.10.2004 - 13:27
Permalinkdeine Public Sub muesste ungefaehr so aussehen:
Public Sub neueFeatureClass()
'Vorhandene Geodatabase öffnen
Dim pAccessWSF As IWorkspaceFactory
Dim pWorkspace As IWorkspace
Set pAccessWSF = New AccessWorkspaceFactory
Set pWorkspace = pAccessWSF.OpenFromFile(ParentFolder, 0)
' Fuer Polygone
Set pFeatClassMuell = createWorkspaceFeatureClass(pWorkspace, "Polygone", 1, 4)
' Fuer Polylines
'Set pFeatClassDamm = createWorkspaceFeatureClass(pWorkspace, "Linien", 1, 3)
' Fuer Punkte
'Set pFeatClassEinzel = createWorkspaceFeatureClass(pWorkspace, "Punkte", 1, 1)
' Layer hinzufuegen
Dim pFLayer As IFeatureLayer
Set pFLayer = New FeatureLayer
Set pFLayer.FeatureClass = pFClass
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.Focusmap
pMap.AddLayer pFLayer
End Sub
Hierfuer benoetigst du das Besipiel:
createWorkspaceFeatureClass
als Private Function in deinem Modul oder als Public Function in einem anderen Modul deines Projektes oder einer Vorlage.
Viel Erfolg und Gruss
Uwe
DB-GIS.de
Gespeichert von uwelangehh am Fr., 01.10.2004 - 13:34
Permalinkwas ich vergass: PartentFolder im obigen Code ist der Name deiner MDB-Datei, z. B. "c:\data\meineGDB.mdb". Dito koenntest du schreiben:
Dim ParentFolder As String
ParentFolder = InputBox("Name der GDB", "Geodatabase", "c:\data\meineGDB.mdb")
Gruss und Happy GISsing
Uwe
Gespeichert von Gast am Do., 21.10.2004 - 14:27
Permalinkdanke für deine Hilfe das hat sehr gut geklappt.
Was ich dich fragen wollte wie bekomme ein Featureclass in ein Feature Dataset?
hast du da eine idee?
PS: die Seit www.DB-GIS.de ist die von dir?
mfg
Susan
Gespeichert von uwelangehh am Fr., 22.10.2004 - 17:28
Permalinkdas Sample hierzu findest du in der Hilfe unter:
Samples -> Geodatabase -> Creating data
oder unter ArcObjectsOnline.esri.com.
Gruss und viel Erfolg
Uwe
P.S. Ja. Die Seiten sind allerdings noch in der Mache. Das Forum habe ich erstellt, bevor ich dieses kennengelernt habe; werde es aber wohl weiter laufen lassen, in der Hoffnung, dass es sich mit Leben fuellt.