Більше

Як вставити Google Maps API Lat/Long у PostgreSQL Postgis GEOMETRY (GEOMETRY, 4326)

Як вставити Google Maps API Lat/Long у PostgreSQL Postgis GEOMETRY (GEOMETRY, 4326)


Я маю дуже мало знань та розуміння щодо ГІС (незважаючи на великий досвід роботи з API Карт Google).

Нещодавно я встановив PostGIS (v2.1.5) з моїм екземпляром PostgreSQL (v9.4), щоб почати зберігати та працювати з даними ГІС. Наразі я використовую DrawingManager API Google Maps API v3 для малювання багатокутників, кіл, прямокутників та маркерів, які потрібно зберігати у базі даних, а пізніше витягувати для повторного відображення полігонів на Картах Google; Ці форми також будуть використовуватися для різних сукупних запитів.

Наразі у мене є два столи. Один з них називається "місцями", де будуть зберігатися багатокутники, кола та прямокутники, створені за допомогою DrawingManager Карт Google. Друга, що називається "rawdata", буде містити набір записів із точкою (lat, long) всередині неї.

Перш за все, я не зовсім розумію концепцію проекцій та те, як вони працюють, але, виходячи з того, що я прочитав в Інтернеті, є те, що обчислення та точність можуть значно відрізнятися. Я розумію, що Карти Google працюють з проекцією Web Mercator, яка, на мою думку, офіційно відома як проекція EPSG: 3857 (або CRS), тоді як найкращим методом зберігання та роботи з формами geometry () у PostGIS є EPSG: 4326. Таким чином, і з посиланням на мої заяви таблиці створення нижче, я вирішив зберігати свої дані про геометрію в EPSG: 4326 у таблицях.

Більш простим методом було б зберігати мою геометрію у новішому географічному форматі, але я не хочу нав'язувати ці недоліки продуктивності та відсутності функціональних можливостей, оскільки я буду працювати зі значною кількістю даних (сотні тисяч, якщо не мільйони записів) ).

Як я повинен зберігати (і конвертувати, якщо це можливо) координати LAT/LONG, які надають мені Карти Google, припускаючи, що мій стовпець "geom" знаходиться в EPSG: 4326 CRS? Я знайшов найпростішу форму використання ST_GeomFromGeoJSON, але я не знаю, чи це правильний спосіб чи ні.

ВСТУПИТИ в місця розташування (мітка, географія) ЦІННОСТІ ('Мітка області', ST_GeomFromGeoJSON ('{"type": "Полігон", "crs": {"type": "name", "properties": {"name": " EPSG: 4326 "}}," координати ": [[[[28.208620548248, -25.851267945548], [28.206732273102, -25.853353448277], [28.207848072052, -25.856597490521], [28.214156627655, -25.85] ']] 84]

Ось тут і виникає моя плутанина з прогнозами. Широкі/довгі координати, через які я проходжу, отримуються з API Карт Google (який, наскільки я розумію, є в EPSG: 3857 CRS), але я нібито зберігаю це у стовпці як EPSG: 4326 ... чи це працюватиме?

Ось структури таблиць:

СТВОРИТИ розташування таблиці (id BIGSERIAL, мітка VARCHAR (255) NOT NULL, геометрія геометрії (geometry, 4326)) WITH (oids = false); СТВОРИТИ ТАБЛИЦЮ необроблених даних (id BIGSERIAL, геометрія geom (точка, 4326)); ALTER TABLE locations_areas ALTER COLUMN geom TYPE геометрія (geometry, 4326) ВИКОРИСТАННЯ ST_Transform (geom, 4326);

У вашому питанні змішано кілька питань. По -перше, PostGIS може зберігати геометрії у стовпці геометрії в будь -якій з тисяч CRS. "Сферичний меркатор" 3857 - це проектована CRS, популярна у веб -відображенні. А добре відомий WGS84, epsg 4326 - це непроектована (географічна, довга/широта) CRS.

Що стосується імпорту geojson до PostGIS, то ви пробували просту утиліту ogr2ogr. Це, мабуть, найпростіше, якщо ви ще не знайомі з SQL та просторовими базами даних. Подивіться на цей пост. Утиліта створить таблиці PostGIS із стовпцем geom у CRS даних geojson.


DrawingManager Карт Google (і JS API Google MAPs) працює в 4326. Тобто не потребує додаткового перетворення.


Подивіться відео: PostgreSQL: PostGIS Extension TH