/ * Belki bu yardımcı olur:
Azimut - pi / 2, bir RHR poligonunun yanlarının dışa dönük yönüdür:
İşte bir PostGIS örneği, sondaki ifadeyi kullanarak bldg117862 tablosunu oluşturabilirsiniz. SRID, EPSG 2271'dir (PA StatePlane North Feet) ve geometri bir Multipolygon'dur. ArcGIS 10'da görselleştirmek için, bldg117862 tablosunu oluşturduktan sonra sorgu / alt sorguları postgis'e bir Sorgu Katmanı bağlantısına yapıştırın. * /
- === QUERY BAŞLANGIÇ ===
/ * Dış sorgu dış ortogonalleri yönlendirir ve kenarların orta noktasından kenarlarınkiyle eşit uzunlukta dışa doğru dikey çizgiler oluşturur.
Baskın bakan yön (ler), yönlendirmeye göre gruplanan, azalan düzende uzunluk / toplam olacaktır * /
Side_id olarak satır_kimliği, uzunluk, yön olarak derece (ortoaz), st_makeline (st_setsrid (st_line_interpolate_point (geom, .5), 2271), st_setsrid (st_makepoint (st_x (st_line_interpolate_point (geom, .5), 2271)) st_setsrid (st_makepoint (st_x (st_line_interpolate_point (geom, .5)) + (uzunluk * (sin ( orthoaz))), st_y (st_line_interpolate_point (geom, .5)) + (uzunluk * (cos (orthoaz)))), 2271))
- sonraki dış alt sorgu, kenarların nokta çiftlerinden çizgiler yapar, her segment için dışa dik olan azimutunu (ortoaz) hesaplar
(SELECT bldg2009gid, line_id, st_length (st_makeline (başlangıç noktası, bitiş noktası)) :: sayısal olarak (10,2) uzunluk, azimut (başlangıç noktası, bitiş noktası), azimut (başlangıç noktası, bitiş noktası) - pi () / 2 ortoaz, st_makeline ( başlangıç noktası, bitiş noktası)
/ * en içteki alt sorgu - bina çokgenlerini kenarların başlangıç noktası / bitiş noktası nokta çiftlerine ayrıştırmak için genera_series () kullanın - note1 - tüm çokgen kenarlarının ortak yönelimini sağlamak için sağ kuralı zorlayın note2 - örnek, çokgen için geometri () çokgeni kullanır () kaldırılabilir */
(SELECT create_series (1, npoints (dış halka (geometryn (st_forceRHR (geom), 1))) - 1) line_id olarak, bldg2009gid olarak git, pointn (dış halka (geometryn (st_forceRHR (geom), 1)), create_series (1, npoint'ler (dış dize (geometryn (st_forceRHR (geom), 1))) - 1)) başlangıç noktası, pointn (dış dize (geometryn (st_forceRHR (geom), 1)), create_series (2, npoints (dış dize (geometryn (st_forceRHR (geom), 1)), ), 1))))) bldg117862'den son nokta olarak) t1 olarak t2 olarak
- === SORGULANAN SONU ===
- bldg117862 tablosu oluşturma / ekleme ifadeleri
STANDARD_CONFORMING_STRINGS öğesini AÇIK olarak ayarlayın; DropGeometryColumn ('', 'bldg117862', 'geom') SEÇİN; DAMLA TABLOSU "bldg117862"; BAŞLA; TABLO OLUŞTUR "bldg117862" (gid seri PRIMARY KEY, "motherpin" varchar (14), "taxpin" varchar (14), "status" varchar (15), "alan" sayısal, "prev_area" sayısal, "pct_change" sayısal, "picture" varchar (133), "mappage" varchar (6), "sref_gid" int4, "e_adresi" varchar (19), "a_adresi" varchar (19), "çevre" sayısal, "kart" int4, "a_addnum" int4, "e_street" varchar (50), "a_street" varchar (50), "e_hsnum" varchar (10)); AddGeometryColumn ('', 'bldg117862', 'geom', '2271', 'MULTIPOLYGON', 2) SEÇİN; 0106000020DF080000010000000103000020DF080000010000000B0000008C721D6C98AC34415E2C5BB9D3E32541AE56DE17BEAC34410613E5A0A0E325411AB6C794AEAC3441BA392FE372E32541C89C38429DAC3441643857628AE325418C299A9095AC3441F66C29B573E32541983F02087EAC34413080AA9F93E325419BAC3C0A86AC3441AC1F3B3DABE32541803A40B974AC3441E8CF3DB9C2E325413E3758C186AC3441D0AAB0E7F7E325410AAAA5429BAC3441BA971217DCE325418C721D6C98AC34415E2C5BB9D3E32541' ); CREATE INDEX "bldg117862_geom_gist gist (" geom "gist_geometry_ops) kullanarak" ON "bldg117862"; SON;