Je travaille dans une mairie. J'ai besoin d'identifier l'avant du terrain. Ici, dans mon pays, nous l'appelons "TESTADA" ou "FRENTE DE LOTE". Je n'ai pas trouvé le terme exact en anglais.
LE FRONT D'UN TERRAIN est une ligne près de l'entrée du sol. Autrement dit, est l'entrée d'une maison. C'est là que la porte d'entrée, avec le numéro de port. Pour illustrer l'image suivante ci-dessous.
Carte avant:
Carte plus tard avec les premières lignes de terrain - Comme il se doit:
UN LOT n'a qu'un FRONT DE TERRE. Dans les coins, c'est la rue principale. Il y a des vieux bâtiments qui resteront comme ils sont car ils sont historiques. Actuellement, nous faisons ces lignes de FRONT LAND manuellement. Nous aimerions en automatiser une partie. Cela pourrait être en utilisant ModelBuilder.
En bref:
- Dans: LAYER OF LAND, LAYER STREET, BUILDING LAYER.
- Sortie: COUCHE avec FRONT DE LIGNES TERRESTRES.
Un autre exemple de lot avant: Le terme FRONT OF LAND fait référence au devant de la propriété. L'entrée de la maison est son front.
la source
Réponses:
Cela nécessiterait du code, je vais donc indiquer quelques lignes directrices afin que vous puissiez commencer par quelque chose, puis poser plus de questions. Le FRONT OF LAND tel qu'illustré peut être identifié par deux méthodes, les deux utilisent des relations spatiales:
Méthode 1) C'est le seul côté d'un polygone qui ne touche aucun autre polygone. Trouvez les polygones qui se touchent, cassez le polygone LAND, recherchez les côtés contre les polygones qui se touchent pour ceux qui ne touchent à rien.
ou
Méthode 2) C'est le côté du polygone le plus proche d'une route. Trouvez la route la plus proche du polygone LAND, brisez le polygone, trouvez le côté le plus proche de la route.
Cela peut être fait avec Postgis ou Shapely si vous choisissez de suivre le chemin open source. Quoi qu'il en soit, je recommanderais de consulter le manuel Shapely pour avoir une idée des relations spatiales qui pourraient être testées, elles sont généralement les mêmes sur n'importe quel logiciel.
la source
Affiner la bonne réponse de @ Pablo, avec les définitions (ci-dessous) et ajouter une liste de contrôle pour chaque méthode, ce qui restreint leur utilisation. Définitions:
La couche de blocs est une table SQL avec des polygones représentant les limites des blocs de ville , qui ou sans trottoirs , mais préservant les ruelles privées (voir front-1 ) ou non adressables (voir front-2 ) dans le bloc.
La couche de lot est une table SQL avec des polygones représentant les limites des terrains .
La couche Street est une table SQL avec des lignes représentant les rues ... Ou, dans un "terrain fluvial", il y a aussi des rivières (et un chemin de fer peut être un "front"?).
Front-1 : les méthodes de @ Pablo concernent un concept général de front , où certains lots ont plus d'un "front sur une rue", parce qu'ils sont au coin (ont deux segments avant ou plus sur toutes ses rues environnantes).
Front-2 : "front" concerne la rue indiquée dans l'adresse officielle (ou adresse de correspondance) du lot. Eux, tous les lots (même au coin) n'ont qu'un seul segment de rue. PS: si votre système d'adresses et la couche de blocs acceptent beaucoup de " condominiums horizontaux " et ses adresses de condo, les "rues privées" doivent apparaître comme des rues habituelles .
L' illustraion de la question de @ ChristianAbreu montre le concept Front-2 (!) , Pas le concept général.
Note technique: vous pouvez connecter Python avec PostGIS ou avec tout autre outil compatible OGC (pour SQL spatial) pour exprimer formellement les listes de contrôle.
Liste de contrôle pour la méthode # 1 - côté d'un polygone qui ne touche aucun autre polygone
Cette méthode a une approche topologique, n'est valable que pour les blocs où toutes les zones du lot forment la zone de leur bloc. Donc, pour utiliser cette méthode, vous avez besoin d'une couche de blocs .
Exprimer formellement: vérifiez si
blkarea~=sum_lotarea
pour chaque bloc,Ou, si les goemetries ne sont pas exactes, ou si les blocs sont avec des trottoirs, utilisez le moins w pour
ST_Buffer(block.geom,-w)
cela assureST_Within(lot.geom lot,ST_Buffer(block.geom,-w))
pour tous les lots.REMARQUE: vérifiez également
si tous les lots sont dans un bloc,
ST_Within(lot.geom,block.geom)
pour tous les lots et blocs associés.si, pour tous les lots non disjoints, il n'y a pas de zones superposées.
not(ST_Overlaps(a,b))
ou cette zone d'intersection n'a aucune signification (c'est-à-dire2*ST_Area(ST_Intersection(a,b))/(ST_Area(a)+ST_Area(b))<0.01
).Liste de contrôle pour la méthode # 2 - le côté du polygone le plus proche d'une route
Cette méthode a une approche géométrique, basée sur une distance euclidienne minimale .
Vérifiez si la couche de rue n'a que des "rues publiques" , car vous devez séparer les "rues publiques" (qui peuvent exprimer l'adresse officielle d'un terrain) des "ruelles" (peuvent être internes au lot ou un "immeuble à condos" ").
Ensuite, vérifiez visuellement si tous les "blocs visuels" sont entourés de rues. Si votre couche rue est incomplète, la méthode n'est pas valide pour ces blocs.
Conclusions: règles de choix des méthodes
Pour la définition de Front-1 :
A) Lorsque vous avez de bonnes données sur les rues, utilisez la méthode n ° 2 ;
B) Lorsque vous avez une couche de bloc et une couche de lot cohérente, utilisez la méthode # 1
C) Lorsque vous n'avez pas de bonnes données, essayez de diviser vos données spatiales en portions où vous pouvez utiliser l'une ou l'autre méthode. PS: même sans la couche de blocs , vous pouvez construire des lots voisins, ou par une bonne réponse à cette question .
Pour la définition Front-2 : vous avez besoin de bonnes données de rue, car la définition Front-2 a besoin du nom de la rue (de l'adresse du lot). Utilisez la méthode n ° 2 et supprimez les segments avant qui n'ont pas le même nom de rue que l'adresse du lot.
la source