/ * Może to pomaga:
Azymut - pi / 2 to skierowana na zewnątrz orientacja boków wielokąta RHR:
Oto przykład PostGIS, możesz utworzyć tabelę bldg117862, używając instrukcji na końcu. SRID to EPSG 2271 (PA StatePlane North Feet), a geometria jest wieloboczna. Aby wizualizować w ArcGIS 10, wklej zapytanie / podkwerendy do połączenia warstwy zapytań do postgis po utworzeniu tabeli bldg117862. * /
- === START ZAPYTAŃ ===
/ * Zapytanie zewnętrzne zapewnia orientację zewnętrznych ortogonali i tworzy zewnętrzne linie ortogonalne o równej długości jak linie boków od punktu środkowego boków.
Dominujący kierunek (kierunki) będzie sumą długości, pogrupowaną według orientacji, w porządku malejącym * /
WYBIERZ identyfikator linii jako identyfikator boku, długość, stopnie (ortoaz) jako orientację, st_makeline (st_setsrid (st_line_interpolate_point (geom, .5), 2271), st_setsrid (st_makepoint (st_x (st_line_interpolate_point (geom, .5)) + + długość * (sin ( orthoaz))), st_y (point_interpolate_point (geom, .5)) + (length * (cos (orthoaz)))), 2271)) as geom from
- następne zewnętrzne podzapytanie tworzy linie z par punktowych boków, oblicza azymut (ortoaz) na zewnątrz prostopadłego dla każdego segmentu
(SELECT bldg2009gid, line_id, st_length (st_makeline (punkt początkowy, punkt końcowy)) :: numeryczne (10,2) jako długość, azymut (punkt początkowy, punkt końcowy), azymut (punkt początkowy, punkt końcowy) - pi () / 2 jako orthoaz, st_makeline ( punkt początkowy, punkt końcowy) jako geom z
/ * najbardziej wewnętrzne podzapytanie - użyj funkcji generuj_series (), aby rozłożyć budujące wielokąty na pary punkt początkowy / punkt końcowy boków - uwaga 1 - wymusza regułę prawej ręki, aby zapewnić wspólną orientację wszystkich boków wielokąta uwaga 2 - przykład używa wieloboku, dla wieloboku geometryn () może być usunięty */
(WYBIERZ wygeneruj_series (1, npoints (externalring (geometryn (st_forceRHR (geom), 1))) - 1) jako line_id, gid jako bldg2009gid, pointn (exteriorring (geometryn (st_forceRHR (geom), 1)), wygeneruj serie (1, npoints (exteriorring (geometryn (st_forceRHR (geom), 1))) - 1)) jako punkt początkowy, pointn (exteriorring (geometryn (st_forceRHR (geom), 1)), generuj serie (2, npoints (externalring (geometryn (st_forceRHR (geom) ), 1))))) jako punkt końcowy od bldg117862) jako t1) jako t2
- === KONIEC ZAPYTANIA ===
- instrukcje bldg117862 tworzą / wstawiają tabelę
ZESTAW STANDARD_CONFORMING_STRINGS NA WŁ; SELECT DropGeometryColumn („”, „bldg117862”, „geom”); TABELA UPADKU „bldg117862”; ZACZYNAĆ; UTWÓRZ TABELĘ „bldg117862” (klucz seryjny gid, „motherpin” varchar (14), „taxpin” varchar (14), „status” varchar (15), „area” numeric, „prev_area” numeric, „pct_change” numeric, „obraz” varchar (133), „mapa strony” varchar (6), „sref_gid” int4, „e_address” varchar (19), „a_address” varchar (19), „perim” numeryczny, „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' ); UTWÓRZ INDEKS „bldg117862_geom_gist„ ON ”bldg117862” przy użyciu gist („geom” gist_geometry_ops); KONIEC;