Daugiau

Topologinių ryšių nustatymas naudojant PostGIS

Topologinių ryšių nustatymas naudojant PostGIS


Bandau atlikti pagrindinę tipologijos analizę naudodamas „PostGIS“. Mano tikslas yra rasti daugiakampius, kurie liečia kitus daugiakampius. Norėdami tai padaryti, aš maniauST_GetFaceEdgesveiktų (nuoroda). Noriu patikrinti kiekvieną daugiakampį savo duomenų bazėje ir išvardyti visus kitus daugiakampius, kurie jį liečia. Žemiau esančiame paveikslėlyje tikiuosi, kad rezultatas pasakys, kad du daugiakampiai (kurie yra pastatai) liečia vieną pastatą, o kitų 4 rezultatai - kad jie liečia 0 daugiakampių.

Tačiau man sunku suprasti, ką daryti. Kai bandžiau nukopijuoti pavyzdį, buvo kelios jo nesuprantamos dalys.

- Grąžina briaunų, susiejusių 1 veidą, seką, briaunų ID ir geometriją. Jei jums tiesiog reikia geomo ir sekų, galite naudoti ST_GetFaceGeometry SELECT t.seq, t.edge, geom FROM topology.ST_GetFaceEdges ('tt ', 1) As t (seka, briauna) VIDINIS PRISIJUNGIMAS tt.edge AS e ON abs (t.yge) = e.edge_id;

Nesu tikras artopologijayra lentelės, stulpelio ar funkcijos dalies pavadinimas. Aš maniau, kad tai buvo stalas, bet nesu tikras.

- išbandykite duomenų pavyzdį - lentelė vadinama „TestArea“, naudojamas stulpelis yra „fid_1“ SELECT t.seq, t.edge, geom FROM TestArea.ST_GetFaceEdges ('fid_1', 1) As t (sek, kraštas ) VIDINIS PRISIJUNGIMAS tt.edge AS e ON abs (t.edge) = e.edge_id;

Aš taip pat nesu tikras, kokia yra vidinio sujungimo funkcija - ar tai sujungia rezultatą su pradiniu objektu?


Vietoj to galite naudoti „ST_Touches“:

ST_Touches - pateikia TRUE, jei geometrijos turi bent vieną bendrą tašką, tačiau jų interjeras nesikerta.

ST_Touches pateikia TRUE, pvz

Gauti skaičiavimus turėtų veikti maždaug taip:

PASIRINKITE a.id, suskaičiuokite (*) FROM polygon_table kaip PRISIJUNGTI polygon_table kaip b ON ST_Touches (a.the_geom, b.the_geom) GROUP BY a.id

Žiūrėti video įrašą: Spatial Relationships using PostGIS. PostGIS Baby Steps