/ * Quizás esto ayude:
Azimut - pi / 2 es la orientación hacia afuera de los lados de un polígono RHR:
Aquí hay un ejemplo de PostGIS, puede crear la tabla bldg117862 usando la instrucción al final. El SRID es EPSG 2271 (PA StatePlane North Feet) y la geometría es un Multipolígono. Para visualizar en ArcGIS 10, pegue las consultas / subconsultas en una conexión de Capa de consulta a postgis después de crear la tabla bldg117862. * /
- === INICIO DE CONSULTA ===
/ * La consulta externa proporciona orientación de las ortogonales externas y crea líneas ortogonales externas de igual longitud que las de los lados desde el punto medio de los lados.
Las direcciones de orientación dominantes serán la suma de la longitud, agrupadas por orientación, en orden descendente * /
SELECCIONE line_id como side_id, longitud, grados (ortohoz) como orientación, st_makeline (st_setsrid (st_line_interpolate_point (geom, .5), 2271), st_setsrid (st_makepoint (st_x (st_line_interpolate_point (geom, .5)) + (length * (sin ( orthoaz))), st_y (st_line_interpolate_point (geom, .5)) + (length * (cos (orthoaz)))), 2271)) como geom de
--siguiente subconsulta externa hace líneas a partir de pares de puntos de los lados, calcula el acimut (ortoaz) de ortogonal hacia afuera para cada segmento
(SELECT bldg2009gid, line_id, st_length (st_makeline (startpoint, endpoint)) :: numeric (10,2) como length, azimuth (startpoint, endpoint), azimuth (startpoint, endpoint) - pi () / 2 as orthoaz, st_makeline ( punto de inicio, punto final) como geom de
/ * subconsulta más interna: use generate_series () para descomponer polígonos de construcción en pares de puntos de punto de inicio / punto final de los lados - nota1 - forzar la regla de la mano derecha para garantizar la orientación común de todos los lados del polígono nota2 - el ejemplo usa multipolígono, para el polígono geometryn () se puede quitar */
(SELECT generate_series (1, npoints (exteriorring (geometryn (st_forceRHR (geom), 1))) - 1) como line_id, gid como bldg2009gid, pointn (exteriorring (geometryn (st_forceRHR (geom), 1)), generate_series (1, npoints (exteriorring (geometryn (st_forceRHR (geom), 1))) - 1)) como punto de inicio, pointn (exteriorring (geometryn (st_forceRHR (geom), 1)), generate_series (2, npoints (exteriorring (geometryn (st_forceRHR (geom ), 1))))) como punto final de bldg117862) como t1) como t2
- === FIN DE LA CONSULTA ===
- la tabla bldg117862 crea / inserta instrucciones
ESTABLECER STANDARD_CONFORMING_STRINGS EN ON; SELECCIONE DropGeometryColumn ('', 'bldg117862', 'geom'); TABLA DE GOTA "bldg117862"; EMPEZAR; 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" numérico, "card" int4, "a_addnum" int4, "e_street" varchar (50), "a_street" varchar (50), "e_hsnum" varchar (10)); SELECCIONE AddGeometryColumn ('', 'bldg117862', 'geom', '2271', 'MULTIPOLYGON', 2); 0106000020DF080000010000000103000020DF080000010000000B0000008C721D6C98AC34415E2C5BB9D3E32541AE56DE17BEAC34410613E5A0A0E325411AB6C794AEAC3441BA392FE372E32541C89C38429DAC3441643857628AE325418C299A9095AC3441F66C29B573E32541983F02087EAC34413080AA9F93E325419BAC3C0A86AC3441AC1F3B3DABE32541803A40B974AC3441E8CF3DB9C2E325413E3758C186AC3441D0AAB0E7F7E325410AAAA5429BAC3441BA971217DCE325418C721D6C98AC34415E2C5BB9D3E32541' ); CREAR ÍNDICE "bldg117862_geom_gist" EN "bldg117862" utilizando gist ("geom" gist_geometry_ops); FINAL;