Ich arbeite in einem Rathaus. Ich muss die Vorderseite des Landes identifizieren. Hier in meinem Land nennen wir es "TESTADA" oder "FRENTE DE LOTE". Ich habe den genauen Begriff nicht auf Englisch gefunden.
Die Vorderseite eines Landes ist eine Linie in der Nähe des Eingangs zum Boden. Das heißt, ist der Eingang eines Hauses. Hier befindet sich das Eingangstor mit der Hafennummer. Um das folgende Bild unten zu veranschaulichen.
Karte vor:
Karte später mit den vorderen Linien des Geländes - Wie sollte sein:
VIEL hat nur eine FRONT OF LAND. In den Ecken ist es die Hauptstraße. Es gibt alte Gebäude, die so bleiben, wie sie sind, weil sie historisch sind. Derzeit machen wir diese Zeilen von FRONT LAND manuell. Wir möchten einen Teil davon automatisieren. Das könnte ModelBuilder sein.
Zusamenfassend:
- In: LANDSCHICHT, LAYER STREET, BUILDING LAYER.
- Ausgabe: LAYER mit FRONTS OF LAND LINES.
Ein weiteres Beispiel für ein vorderes Grundstück: Der Begriff FRONT OF LAND bezieht sich auf die Vorderseite des Grundstücks. Der Eingang des Hauses ist seine Vorderseite.
quelle
Antworten:
Das würde Code erfordern, daher werde ich auf einige Richtlinien verweisen, damit Sie mit etwas beginnen und dann weitere Fragen stellen können. Die gezeigte FRONT OF LAND kann durch zwei Methoden identifiziert werden, wobei beide räumliche Beziehungen verwenden:
Methode 1) Es ist die einzige Seite eines Polygons, die kein anderes Polygon berührt. Suchen Sie die berührenden Polygone, brechen Sie das LAND-Polygon und prüfen Sie, ob die Seiten gegen die berührenden Polygone gerichtet sind, die nichts berühren.
oder
Methode 2) Es ist die Seite des Polygons, die einer Straße am nächsten liegt. Suchen Sie die Straße, die dem LAND-Polygon am nächsten liegt, brechen Sie das Polygon und suchen Sie die Seite, die der Straße am nächsten liegt.
Dies kann mit Postgis oder Shapely erfolgen, wenn Sie dem Open Source-Pfad folgen. Auf jeden Fall würde ich empfehlen, das Shapely-Handbuch zu lesen , um eine Vorstellung von den räumlichen Beziehungen zu bekommen, die getestet werden könnten. Sie sind in jeder Software meistens gleich.
quelle
Verfeinern Sie die gute Antwort von @ Pablo mit Definitionen (unten) und fügen Sie für jede Methode eine Checkliste hinzu, um deren Verwendung einzuschränken. Definitionen:
Block Schicht eine SQL - Tabelle mit Polygonen ist , die darstellen , Stadtblocks Grenzen, die ohne oder Gehwege , aber private Konservieren (siehe Front-1 ) oder nicht-adressierbar Gassen (siehe Front-2 ) in den Block.
Lot Schicht ist eine SQL - Tabelle mit Polygonen darstellen Grundstücke Grenzen.
Straßenschicht ist eine SQL - Tabelle mit Linien , die Straßen ... Oder in einem „Fluss Land“ auch Flüsse (und eine Eisenbahn kann eine „Front“ sein?).
Front-1 : das @ Pablos Methoden sind über ein allgemeines Konzept der Front , wo einige viel mehr als „eine Front über eine Straße“, weil an der Ecke sind (zwei oder mehr Front-Segmente über alle seine umliegenden Straßen).
Front-2 : "Front" bezieht sich auf die Straße, die in der offiziellen Adresse (oder Korrespondenzadresse) des Loses angegeben ist. Sie haben alle Lose (auch an der Ecke) nur ein Front-Street-Segment. PS: Wenn Ihr Adressensystem und Ihre Blockschicht viele "horizontale Eigentumswohnungen " und deren Eigentumswohnungsadressen akzeptieren , müssen die "privaten Straßen" wie gewohnt angezeigt werden .
Die Frageillustration von @ ChristianAbreu zeigt das Front-2- Konzept (!) , Nicht das allgemeine.
Technischer Hinweis: Sie können Python mit PostGIS oder einem anderen OGC-kompatiblen Tool (für räumliches SQL) verbinden, um die Checklisten formal auszudrücken.
Checkliste für Methode 1 - Seite eines Polygons, die kein anderes Polygon berührt
Diese Methode hat einen topologischen Ansatz und gilt nur für Blöcke, bei denen alle Losbereiche den Blockbereich bilden. Um diese Methode verwenden zu können, benötigen Sie eine Blockebene .
Formell ausdrücken: Überprüfen Sie, ob
blkarea~=sum_lotarea
für jeden Block,Oder wenn die Goemetries nicht genau sind oder wenn die Blöcke mit Gehwegen versehen sind, verwenden Sie das geringste w, um sicherzustellen,
ST_Buffer(block.geom,-w)
dassST_Within(lot.geom lot,ST_Buffer(block.geom,-w))
alle Lose vorhanden sind.HINWEIS: Überprüfen Sie auch
Wenn sich alle Lose innerhalb eines Blocks befinden,
ST_Within(lot.geom,block.geom)
für alle Lose und zugehörigen Blöcke.Wenn für alle nicht disjunkten Lose keine überlappenden Bereiche vorhanden sind.
not(ST_Overlaps(a,b))
oder dieser Schnittbereich hat keine Bedeutung (das heißt2*ST_Area(ST_Intersection(a,b))/(ST_Area(a)+ST_Area(b))<0.01
).Checkliste für Methode 2 - die Seite des Polygons, die einer Straße am nächsten liegt
Diese Methode hat einen geometrischen Ansatz, der auf einem minimalen euklidischen Abstand basiert .
Überprüfen Sie, ob die Straßenschicht nur "öffentliche Straßen" hat , da Sie "öffentliche Straßen" (die die offizielle Adresse eines Grundstücks ausdrücken können) von "Gassen" (können sich innerhalb des Grundstücks oder eines "Eigentumswohnungsblocks" trennen müssen ").
Überprüfen Sie dann visuell, ob alle "visuellen Blöcke" von Straßen umgeben sind. Wenn Ihre Straßenebene unvollständig ist, ist die Methode für diese Blöcke nicht gültig.
Schlussfolgerungen: Regeln für die Auswahl von Methoden
Für die Front-1- Definition:
A) Wenn Sie gute Straßendaten haben, verwenden Sie Methode 2 ;
B) Wenn Sie eine Blockschicht und eine konsistente Chargenschicht haben, verwenden Sie Methode 1
C) Wenn Sie keine guten Daten haben, teilen Sie Ihre Geodaten in Teile auf, in denen Sie die eine oder andere Methode anwenden können. PS: Auch ohne die Blockschicht können Sie benachbarte Grundstücke oder durch eine gute Antwort auf diese Frage verbinden .
Für die Front-2- Definition: Sie benötigen gute Straßendaten, da für die Front-2- Definition der Straßenname (der Losadresse) erforderlich ist. Verwenden Sie Methode 2 und löschen Sie vordere Segmente, die nicht denselben Straßennamen wie die Losadresse haben.
quelle