Veel

Google Mapsi API Lat/Long sisestamine PostgreSQL Postgis GEOMETRY -sse (GEOMETRY, 4326)

Google Mapsi API Lat/Long sisestamine PostgreSQL Postgis GEOMETRY -sse (GEOMETRY, 4326)


Mul on GIS -ist väga vähe teadmisi ja arusaamist (hoolimata ulatuslikust kogemusest Google Mapsi API -ga).

GIS -andmete salvestamise ja nendega töötamise alustamiseks installisin hiljuti oma PostgreSQL (v9.4) eksemplariga PostGISi (v2.1.5). Ma kasutan praegu Google Maps API v3 joonistamishaldurit, et joonistada hulknurki, ringe, ristkülikuid ja markereid, mis tuleb andmebaasi salvestada ja hiljem alla laadida, et kuvada hulknurgad uuesti Google Mapsis; Neid kujundeid kasutatakse ka erinevate koondpäringute jaoks.

Praegu on mul kaks lauda. Seda nimetatakse asukohtadeks, kuhu salvestatakse Google Mapsi joonistushalduriga loodud hulknurgad, ringid ja ristkülikud. Teine, nimega "rawdata", sisaldab kirjete komplekti, mille sees on POINT (lat, long).

Ennekõike ei saa ma täielikult aru prognooside kontseptsioonist ja nende toimimisest, kuid võrgus lugenud põhjal võib arvata, et arvutused ja täpsus võivad oluliselt erineda. Mõistan, et Google Maps töötab Web Mercatori projektsiooniga, mis minu arvates on ametlikult tuntud kui EPSG: 3857 projektsioon (või CRS), samas kui eelistatud meetod geomeetria () kujundite salvestamiseks ja nendega töötamiseks PostGISis on EPSG: 4326. Sellisena ja viidates allolevatele tabeliväljenditele, olen otsustanud oma geomeetriaandmed talletada tabelitesse EPSG: 4326.

Lihtsam meetod oleks salvestada oma geomeetria uuemasse geograafilisse vormingusse, kuid ma ei soovi neid jõudlusi ja funktsionaalsuse puudumist kehtestada, kuna töötan märkimisväärse hulga andmetega (sadu tuhandeid, kui mitte miljoneid kirjeid) ).

Kuidas ma peaksin salvestama (ja vajaduse korral teisendama) LAT/LONG koordinaadid, millega Google Maps mulle varustab, eeldades, et minu veerg „geom” asub EPSG -s: 4326 CRS? Leidsin, et lihtsaim vorm oli kasutada ST_GeomFromGeoJSON, kuid kas ma ei tea, kas see on õige viis või mitte.

INSERT INTO locations (label, geom) VALUES ('Area Label', ST_GeomFromGeoJSON ('{"type": "Polygon", "crs": {"type": "name", "properties": {"name": " EPSG: 4326 "}}," koordinaadid ": [[[28.208620548248, -25.851267945548], [28.206732273102, -25.853353448277], [28.207848072052, -25.856597490521], [28.214156627655] -25.855]

Siin on aga minu segadus prognoosidega. Latti/pikkuse koordinaadid, mida ma läbin, on saadud Google Mapsi API -st (mis nagu ma aru saan, on EPSG -s: 3857 CRS), kuid väidetavalt salvestan selle veergu kui EPSG: 4326… kas see töötab?

Siin on tabeli struktuurid:

CREATE TABLE asukohad (id BIGSERIAL, silt VARCHAR (255) NOT NULL, geom geomeetria (geomeetria, 4326)) WITH (oids = false); CREATE TABLE toorandmed (id BIGSERIAL, geom geomeetria (punkt, 4326)); ALTER TABLE locations_areas ALTER COLUMN geom TYPE geomeetria (geomeetria, 4326) STINGTransformatsiooni kasutamine (geom, 4326);

Teie küsimusse on segatud mitu probleemi. Esiteks saab PostGIS salvestada geomeetria veergu geomeetriat ükskõik millisesse tuhandesse CRS -i. "Sfääriline Mercator" 3857 on projekteeritud CRS, mis on populaarne veebikaardistamisel. Ja hästi tuntud WGS84, epsg 4326 on projekteerimata (geograafiline, pikk/lai) CRS.

Mis puudutab geojsoni importimist PostGIS -i, siis kas olete proovinud utiliiti ogr2ogr. See on ilmselt kõige lihtsam, kui te pole SQL -i ja ruumiandmebaasidega veel tuttav. Vaadake seda postitust. Utiliit loob geojsoni andmete CRS -is geomi veeruga PostGIS -tabelid.


Google Mapsi joonistushaldur (ja Google MAPs JS API) töötab 4326. s.t. ei vaja täiendavat teisendamist.