Sto cercando di eseguire un'analisi di base della tipologia utilizzando PostGIS. Il mio obiettivo è trovare eventuali poligoni che tocchino altri poligoni. Per fare questo, ho pensato che ST_GetFaceEdges
avrebbe funzionato ( riferimento ). Voglio controllare ogni poligono nel mio database ed elencare tutti gli altri poligoni che lo toccano. Nell'immagine seguente mi aspetterei che il risultato dica che due dei poligoni (che sono edifici) toccano un edificio, mentre i risultati degli altri 4 dicono che toccano 0 poligoni.
Tuttavia, ho qualche difficoltà a capire cosa fare. Quando ho provato a copiare l'esempio c'erano alcune parti che non capivo.
-- Returns the sequence, edge id
-- , and geometry of the edges that bound face 1
-- If you just need geom and seq, can use ST_GetFaceGeometry
SELECT t.seq, t.edge, geom
FROM topology.ST_GetFaceEdges('tt',1) As t(seq,edge)
INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id;
Non sono sicuro se topology
sia il nome di una tabella, colonna o parte della funzione. Ho pensato che fosse il tavolo, ma non ne sono sicuro.
-- try out on sample of data
-- Table is called 'TestArea', column used is 'fid_1'
SELECT t.seq, t.edge, geom
FROM TestArea.ST_GetFaceEdges('fid_1', 1) As t(seq,edge)
INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id;
Inoltre, non sono sicuro di quale sia la funzione del join interno: questo unisce il risultato all'oggetto originale?
AddTopoGeometryColumn
a alla tabella prima di eseguire la query? Sulla base dei risultati ST_Touches
dei valori che ho verificato, tutti avevano un senso, ma forse era un caso.
AddTopoGeometryColumn
, ma i tuoi dati dovrebbero essere digitalizzati in modo topologicamente coerente. Ad esempio, tradizionalmente digitalizzeresti due case bifamiliari come due poligoni e utilizzeresti "aggancia al vertice" nel tuo GIS per garantire i tocchi del muro condiviso, ma sarà memorizzato come due linee coincidenti con punti coincidenti ad ogni estremità. Ma digitalizzarle topologicamente significa che il muro condiviso è in realtà solo una linea e due nodi condivisi da ciascun poligono. ST_Touches
fa solo un controllo spaziale per la vicinanza, non uno topologico.
CreateTopology
e così via ( bit.ly/oLk8QY ) Ma il modo in cui i tuoi edifici sono digitalizzati mi sembra come se fossero topologicamente distinti nonostante la vicinanza visiva dei loro bordi. Solo qualcosa di cui i futuri interrogatori devono essere consapevoli.