Ich habe eine Reihe nicht georeferenzierter CAD-Ebenen (siehe diese Frage ) mit Textanmerkungsfunktionen. Ich habe ein Modell zum Konvertieren des Texts in Punkte erstellt, aber nach dem Konvertieren der Anmerkung in eine Punkt-Feature-Class sehe ich, dass die CAD-Textankerpunkte nicht mit der Mitte des CAD-Textes übereinstimmen (wo die Punkte hingehören).
Daher möchte ich ein Feature programmgesteuert (mit ArcPy oder ModelBuilder) relativ zu seiner aktuellen Position (Delta x, y ) [verschieben] , indem ich einen gemessenen X, Y-Wert verwende, den ich bereitstellen werde.
Auf diese Weise könnte ich die GIS-Punkte anstelle des versetzten CAD-Ankerpunkts wieder dorthin verschieben, wo sie hingehören.
Wie kann ich diese Aufgabe erfüllen?
@PolyGeo hat mit SHAPE @ XY IN 10.1 eine hervorragende Antwort gegeben , aber derzeit verwende ich 10.0. Irgendwelche 10.0 Ideen?
quelle
Ich verdanke @ artist21, dass er mich zu meiner endgültigen Lösung geführt hat. Im Online-Hilfeartikel von ArcGIS 10.0 mit dem Titel " Feldbeispiele berechnen ", der unter den Unterkategorien " Codebeispiele - Geometrie " und " Verschieben Sie für eine Punkt-Feature-Class die x-Koordinate jedes Punkts um 100 " aufgeführt ist, habe ich tatsächlich ein fast vollständiges Skript gefunden.
Das letzte Skript, das ich im ModelBuilder-Tool "Feld berechnen" verwendet habe, war:
Ausdruck:
Dabei sind ShiftX und ShiftY Variablen (als Parameter), die auf der ModelBuilder-Zeichenfläche definiert sind.
Ausdruckstyp:
Codeblock:
Da alle Modelle an einem ausgewählten Satz arbeiten, sollten Sie dies auch als generisches Tool erstellen können, das in Verbindung mit anderen Modellen / Tools in anderen Modelbuilder-Sitzungen funktioniert. Das sehr einfache Modell, das ich erstellt habe (als "Plugin" für andere Modelle zum Verschieben von Koordinatenwerten), sieht folgendermaßen aus. Auf diese Weise kann ich die Verschiebung pro Auswahlsatz steuern (wie in anderen Modellen definiert):
Es hat wie ein Zauber funktioniert, ich danke Ihnen allen für Ihre Beiträge!
quelle
Sie können dieses Feldrechnerskript auch verwenden , um Feature-Positionen zu verschieben:
XYsetVALUE (! SHAPE!,! X_COORD!,! Y_COORD!)
Mit der obigen Funktion können Sie eine zusätzliche Methode zum Berechnen von Feldern in Ihr Modell aufnehmen.
quelle
Ich habe die Lösung so angepasst, dass Punkte in eine bestimmte Richtung (Winkel) und eine bestimmte Entfernung verschoben / verschoben werden.
Sieht aus wie:
und werden wie shiftXYCoordinates (! SHAPE!,! Angle !, 5000) aufgerufen, wenn Sie ein Feld "Winkel" für Ihre Punktmerkmale haben (oder natürlich mit einer Konstanten). Der Winkel sollte in Dezimalgraden angegeben werden. 0 verschiebt sich nach oben, 90 nach rechts usw. Ich habe sie erhalten, nachdem ich Strip-Map-Index-Features erstellt und diese in Punkte konvertiert habe.
Stellen Sie außerdem sicher, dass Sie vor dem Ausführen den Feldnamen „Form“ auswählen :)
(Lösung in ArcMap 10.0 SP5 getestet)
quelle
Wie Sie sehen können, ist es in 10.1 viel einfacher, wenn Sie Zugriff auf Cursortoken erhalten.
quelle
Dies funktioniert für 10.0:
quelle