/ * Mungkin ini membantu:
Azimuth - pi / 2 adalah orientasi sisi yang menghadap ke luar dari poligon RHR:
Berikut ini adalah contoh PostGIS, Anda dapat membuat tabel bldg117862 menggunakan pernyataan di akhir. SRID adalah EPSG 2271 (PA StatePlane North Feet) dan geometrinya adalah Multipolygon. Untuk memvisualisasikan di ArcGIS 10, rekatkan kueri / subqueries ke dalam koneksi Query Layer ke postgis setelah membuat tabel bldg117862. * /
- === MULAI QUERY ===
/ * Kueri luar memberikan orientasi ortogonal luar, dan menciptakan garis ortogonal luar dengan panjang yang sama dengan sisi-sisi dari titik tengah sisi.
Arah menghadap dominan adalah jumlah panjang, dikelompokkan berdasarkan orientasi, dalam urutan menurun * /
SELECT line_id sebagai side_id, panjang, derajat (ortoaz) sebagai orientasi, st_makeline (st_setsrid (st_line_interpolate_point (geom, .5), 2271), st_setsrid (st_makepoint (st_x (st_line_interpolate_point (geom, panjang (+5)) orthoaz))), st_y (st_line_interpolate_point (geom, .5)) + (panjang * (cos (orthoaz)))), 2271)) sebagai geom dari
- subquery luar berikutnya membuat garis dari pasangan titik sisi, menghitung azimuth (ortoaz) ortogonal luar untuk setiap segmen
(PILIH bldg2009gid, line_id, st_length (st_makeline (titik awal, titik akhir)) :: numeric (10,2) panjangnya, azimuth (titik awal, titik akhir), azimuth (titik awal, titik akhir) - pi () / 2 sebagai orthoaz, st_makeline ( titik awal, titik akhir) sebagai geom dari
/ * subquery terdalam - gunakan gener_series () untuk mendekomposisi poligon bangunan menjadi pasangan titik awal / titik akhir sisi - note1 - memaksa tangan kanan untuk memastikan orientasi umum semua sisi poligon note2 - contoh menggunakan multipoligon, untuk poligon geometri () dapat dihapus * /
(SELECT generate_series (1, npoints (exteriorring (geometryn (st_forceRHR (geom), 1)) - 1) sebagai line_id, gid sebagai bldg2009gid, pointn (exteriorring (geometryn (st_forceRHR (geom), 1)), generate_series (1, npoints (exteriorring (geometryn (st_forceRHR (geom), 1))) - 1)) sebagai titik awal, pointn (exteriorring (geometryn (st_forceRHR (geom), 1)), menghasilkan_series (2, npoints (exteriorring (geometryn (st_forceRHR (geom) ), 1))))) sebagai titik akhir dari bldg117862) sebagai t1) sebagai t2
- === AKHIR QUERY ===
- tabel bldg117862 membuat / menyisipkan pernyataan
SET STANDARD_CONFORMING_STRINGS TO ON; SELECT DropGeometryColumn ('', 'bldg117862', 'geom'); DROP TABLE "bldg117862"; MULAI; CREATE TABLE "bldg117862" (gid serial PRIMARY KEY, "motherpin" varchar (14), "taxpin" varchar (14), "status" varchar (15), "area" numeric, "prev_area" numeric, "pct_change" numeric, "picture" varchar (133), "mappage" varchar (6), "sref_gid" int4, "e_address" varchar (19), "a_address" varchar (19), "perim" numeric, "card" int4, "a_addnum" int4, "e_street" varchar (50), "a_street" varchar (50), "e_hsnum" varchar (10)); SELECT AddGeometryColumn ('', 'bldg117862', 'geom', '2271', 'MULTIPOLYGON', 2); 0106000020DF080000010000000103000020DF080000010000000B0000008C721D6C98AC34415E2C5BB9D3E32541AE56DE17BEAC34410613E5A0A0E325411AB6C794AEAC3441BA392FE372E32541C89C38429DAC3441643857628AE325418C299A9095AC3441F66C29B573E32541983F02087EAC34413080AA9F93E325419BAC3C0A86AC3441AC1F3B3DABE32541803A40B974AC3441E8CF3DB9C2E325413E3758C186AC3441D0AAB0E7F7E325410AAAA5429BAC3441BA971217DCE325418C721D6C98AC34415E2C5BB9D3E32541' ); CREATE INDEX "bldg117862_geom_gist" ON "bldg117862" menggunakan inti ("geom" gist_geometry_ops); AKHIR;