Hallo schon wieder ich.
Ich habe folgendes Problem: Ich möchte ein Feature in einer Featureclass speichern, die sich in einer PersonalGeodatabase befindet.
Dies funktioniert auch, das Feature wurde offensichtlich mit allen Attributen gespeichert, leider ist danach KEINES der Objekte mehr in der Karte zu sehen.
Auch "Zoom to Layer" funktioniert nicht, aber ein räumliches Bezugssystem wurde zugeordnet.
Weiß vielleicht jemand, wieso? Ich nämlich leider gar nicht.
Oder wie fügt man denn korrekterweise neue Features einer Featureclass hinzu, die sich in einer PGDB befindet?
Mein Tool funktioniert ganz wunderbar nur bei einer Featureclass, die sich NICHT in einer PGDB befindet.
Vielen Dank mal im Vorraus,
Ulrike
Ich habe folgendes Problem: Ich möchte ein Feature in einer Featureclass speichern, die sich in einer PersonalGeodatabase befindet.
Dies funktioniert auch, das Feature wurde offensichtlich mit allen Attributen gespeichert, leider ist danach KEINES der Objekte mehr in der Karte zu sehen.
Auch "Zoom to Layer" funktioniert nicht, aber ein räumliches Bezugssystem wurde zugeordnet.
Weiß vielleicht jemand, wieso? Ich nämlich leider gar nicht.
Oder wie fügt man denn korrekterweise neue Features einer Featureclass hinzu, die sich in einer PGDB befindet?
Mein Tool funktioniert ganz wunderbar nur bei einer Featureclass, die sich NICHT in einer PGDB befindet.
Vielen Dank mal im Vorraus,
Ulrike
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von uwelangehh am Mi., 06.07.2005 - 16:55
Permalinkmeinst du mit mein Tool ein Stück VBA-Code? Magst du diesen gegebenenfalls hier einstellen?
Gruss
Uwe
Gespeichert von Gast am Do., 07.07.2005 - 12:09
Permalinktut mir leid, aber ich darf nichts mehr in's Netz stellen, wegen des Betriebsgeheimnisses und so, sorry.
Grüße,
Uli
Gespeichert von KEngelberg am Do., 07.07.2005 - 18:56
PermalinkWir sind hier keine Altruisten und kriegen auch kein Geld dafür, sondern wir helfen uns gegenseitig.
(Leider kann ich zu Deinem fachlichen Problem allerding nix beitragen.)
ein Chef
Gespeichert von Gast am Fr., 08.07.2005 - 10:30
Permalinkhabe hier eine sehr abgespeckte Version meines Tools, habe nicht ausprobiert, ob so alles hundertprozentig funktioniert, aber im Prinzip müßte es gehen.
Public Sub addFeature(strShapepath As String, _
strfilename As String, _
pPoint As IPoint)
Dim pPCS As IProjectedCoordinateSystem
Dim pWorkspaceFactory As IWorkspaceFactory
Dim pFWS As IFeatureWorkspace
Dim pMap As IMap
Dim pMxDoc As IMxDocument
Dim pFeatureClass As IFeatureClass
Dim pFeatureLayer As IFeatureLayer
Dim pActiveView As IActiveView
Dim ppSet As ISet
Dim pFeature As IFeature
Dim pFeatureClassWrite As IFeatureClassWrite
Dim pSRFactory As ISpatialReferenceFactory2
Dim pQueryFilter As IQueryFilter
Dim pCursor As ICursor
Dim pMidPoint As IPoint
Dim pActiveLayer As ILayer
Dim arrayname() As String
Dim refnr As Long
Set pMxDoc = ThisDocument
Set pMap = pMxDoc.FocusMap
Set pActiveLayer = pMxDoc.SelectedLayer
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pFWS = pWorkspaceFactory.OpenFromFile(strShapepath, 0)
Set pFeatureClass = pFWS.OpenFeatureClass(strfilename)
Set pMidPoint = New Point
pMidPoint.PutCoords pPoint.x, pPoint.y
Set pSRFactory = New SpatialReferenceEnvironment
Set pPCS = pSRFactory.CreateProjectedCoordinateSystem(32632)
Set pMidPoint.SpatialReference = pPCS
Set ppSet = New esriSystem.Set
Do While pFeature Is Nothing
Set pFeature = pFeatureClass.CreateFeature
Set pFeature.Shape = pMidPoint
Load Form_Beschreibung
Form_Beschreibung.Show
Form_Beschreibung.TextBox1.SetFocus
' x-Koordinate des Pinpoints / 3. Feld
pFeature.Value(2) = “Hallo”
' y-Koordinate des Pinpoints / 4. Feld
pFeature.Value(3) = “Sinnvoller Text”
' speichern
pFeature.Store
ppSet.Add pFeature
Set pFeatureClassWrite = pFeatureClass
pFeatureClassWrite.WriteFeatures ppSet
Loop
Set pFeatureClassWrite = pFeatureClass
pFeatureClassWrite.WriteFeatures ppSet
pMxDoc.ActiveView.Refresh
End Sub
Mein Tool zum Schreiben in die datenbank funtioniert im Prinzip genauso.
Mein Problem hierbei ist, wie oben beschrieben, nicht das Schreiben in die DB, sondern das Sichtbar machen der Features.
Über eine DBabfrage und das Anlegen einer neuen Featureclass, die praktisch als temporärer Selectionlayer fungiert, ist das möglich, aber es gibt doch sicherlich einen einfacheren Weg. Exportiert man die Featureclass in die DB, so sind alle features sichtbar, erst beim Hinzufügen neuer Features lassen sich diese nicht mehr anzeigen????
Falls jemand weiß, wie das funktioniert, wäre ich sehr dankbar.
Gespeichert von Gast am Fr., 08.07.2005 - 10:32
Permalinkdas mit form_Beschreibung... muß natürlich raus aus dem Code
Grüße
Uli
Gespeichert von anderer Gast am Fr., 08.07.2005 - 12:50
PermalinkBei größeren Datenmengen solltest du aber besser einen InsertCursor benutzen.
Gespeichert von anderer Gast am Fr., 08.07.2005 - 12:52
PermalinkEs reicht der FeatureClass eine SpatialReference zuzuweisen, den einzelnen Punkt brauchst du nicht zu projezieren.
Gespeichert von Gast am Fr., 08.07.2005 - 13:02
Permalinkdas mit dem AccessWorkspaceFactory weiß ich bereits. Aber wieso wird mit IFeatureClassWrite alles mehrfach gespeichert?
Woran kann ich das denn erkennen, das alles mehrfach gespeichert wird?
Danke,
Uli
Gespeichert von anderer Gast am Fr., 08.07.2005 - 15:22
PermalinkIch hab's nicht probiert, aber was kommt denn im Shape an?
Gespeichert von Gast am Fr., 08.07.2005 - 15:57
PermalinkIm Shape kommt das an, was ich möchte. Die Funktion funktioniert bisher problemlos, solange sich das Shapefile ausserhalb der Geodatabase befindet.
Auch wenn ich die Features in das Shapefile in der Geodatabase speichere, funktioniert das problemlos. Nur lassen sich eben die Objekte nicht mehr in der Karte anzeigen. Leider keine Fehlermeldung oder sonstiges...
Ich probier es mal aus ohne IFeatureClasswrite,
Danke,
Uli
Gespeichert von Gast am Fr., 08.07.2005 - 16:07
PermalinkIst tatsächlich überhaupt ganz überflüssig, hatte die funktion ursprünglich dazu genutzt, Features zu löschen und habe diese dann etwas geändert, um auch Features speichern zu können.
Danke für den Tip,
Ulrike
Gespeichert von Gast am Fr., 08.07.2005 - 17:04
Permalinkich glaube, ich weiß, wieso das nicht geht, warum die Features nicht mehr angezeigt werden können. Und zwar wird die Attributspalte "Shape", sobald man die bestehende FeatureClass in eine GDB exportiert, als OLE-Objekt angelegt mit dem Inhalt "long binaryDaten". Diese Features lassen sich auch noch problemlos in die Karte laden.
OLE-Objektdatentyp: Ist ein felddatentyp, der für Objekte verwandt wird, die in anderen Anwendungen erstellt wurden und die in einer Accessdatenbank verknüpft bzw. in diese eingebettet wurden.
Sobald ich nun ein neues Feature in der FC speichere, bekommt dieses diesen Wert nicht mehr und nichts geht mehr.
Kann es sein, dass diese Vermutung die Richtige ist?
Schönes Wochenende,
Uli
Gespeichert von Gast am Mo., 11.07.2005 - 12:52
Permalinkmeine Vermutung von oben stimmt nicht, der Fehler lag darin, dass meine Featureclass vom Geomtrietyp "Point" war und nicht vom Typ Multipoint.
So funktioniert das Ganze problemlos und die neuen features werden auch sofort in der Karte gezeichnet.
Gruß,
Uli