/* Vielleicht hilft das:
Azimut - pi / 2 ist die nach außen gerichtete Ausrichtung der Seiten eines RHR-Polygons:
In diesem PostGIS-Beispiel können Sie die Tabelle bldg117862 mithilfe der Anweisung am Ende erstellen. Die SRID ist EPSG 2271 (PA StatePlane North Feet) und die Geometrie ist ein Multipolygon. Fügen Sie zur Visualisierung in ArcGIS 10 Abfragen / Unterabfragen nach dem Erstellen der Tabelle bldg117862 in eine Query Layer-Verbindung zu postgis ein. * /
- === START DER ABFRAGE ===
/ * Die äußere Abfrage ermöglicht die Ausrichtung von nach außen gerichteten Orthogonalen und erstellt nach außen gerichtete orthogonale Linien mit der gleichen Länge wie die der Seiten vom Mittelpunkt der Seiten.
Dominante Blickrichtung (en) ist die Summe der Länge, gruppiert nach Ausrichtung, in absteigender Reihenfolge * /
SELECT line_id als side_id, Länge, Grad (orthoaz) als Orientierung, st_makeline (st_setsrid (st_line_interpolate_point (geom, .5), 2271), st_setsrid (st_makepoint (st_x (st_line_interpolate_point (geom, .5)) + (Länge * (sin ()) orthoaz))), st_y (st_line_interpolate_point (geom, .5)) + (Länge * (cos (orthoaz)))), 2271)) als Geom von
- Die nächste äußere Unterabfrage erstellt Linien aus den Punktpaaren der Seiten. Berechnen Sie für jedes Segment den Azimut (Orthoaz) der nach außen gerichteten Orthogonalität
(SELECT bldg2009gid, line_id, st_length (st_makeline (Startpunkt, Endpunkt)) :: numerisch (10,2) als Länge, Azimut (Startpunkt, Endpunkt), Azimut (Startpunkt, Endpunkt) - pi () / 2 als orthoaz, st_makeline ( Startpunkt, Endpunkt) als Geom von
/ * innerste Unterabfrage - Verwenden Sie generate_series (), um Gebäudepolygone in Startpunkt- / Endpunktpunktpaare der Seiten zu zerlegen. - note1 - Erzwingen Sie die Rechtsregel, um die gemeinsame Ausrichtung aller Polygonseiten zu gewährleisten. note2 - Beispiel verwendet Multipolygon, für Polygon die Geometrie n () kann entfernt werden */
(SELECT generate_series (1, nPunkte (Außenring (Geometrien (st_forceRHR (geom), 1))) - 1) als line_id, gid als bldg2009gid, pointn (Außenring (Geometrien (st_forceRHR (geom), 1)), generate_series (1, nPunkte (Außenring (Geometrien (st_forceRHR (geom), 1)) - 1)) als Startpunkt, Punktn (Außenring (Geometrien (st_forceRHR (geom), 1)), generate_series (2, nPunkte (Außenring (Geometrien (st_forceRHR (geom)) ), 1))))) als Endpunkt von bldg117862) als t1) als t2
- === ENDE DER ABFRAGE ===
- die Anweisungen zum Erstellen / Einfügen der Tabelle bldg117862
SET STANDARD_CONFORMING_STRINGS auf ON; SELECT DropGeometryColumn ('', 'bldg117862', 'geom'); DROP TABLE "bldg117862"; START; CREATE TABLE "bldg117862" (gid serial PRIMARY KEY, "Motherpin" varchar (14), "taxin" varchar (14), "status" varchar (15), "area" numeric, "prev_area" numeric, "pct_change" numeric, "Bild" varchar (133), "Zuordnung" varchar (6), "sref_gid" int4, "e_address" varchar (19), "a_address" varchar (19), "perim" numerisch, "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" using gist ("geom" gist_geometry_ops); ENDE;