2016-10-30 3 views
1

В настоящее время я получаю точки PostGIS на стороне клиента с помощью JavaScript, есть ли способ конвертировать эти точки в обычные координаты x, y с использованием JavaScript?Как читать точку PostGIS в JavaScript?

Вот как я получаю очки в настоящее время:

0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140 
+2

этот ответ описывает, как иметь дело с форматом ВКБ - http://gis.stackexchange.com/questions/60050/wkb-to-wkt- javascript-function - хотя, вероятно, лучше настроить SQL-запрос, чтобы получить координаты напрямую ... – ewcz

ответ

1

Вы не разместили ваш фактический запрос, но если вы заключаете геометрию, на который ссылается в своем заявлении SELECT с ST_AsText() то он возвращает геометрии в читаемый человеком формат под названием Well Known Text. , например.

SELECT my_id, ST_AsText(my_geom) FROM my_table; 
-- returns POINT(31.9497 35.9328) using the geometry from your question. 

Это довольно обычное упражнение по синтаксическому анализу. Или, если вы просто хотите сырой долготе/лат (или пищеблок/Northing), затем структурировать ваш запрос, как это:

SELECT ST_X(my_geom), ST_Y(my_geom) FROM my_table; 
-- returns: 31.9497, 35.9328 using the geometry from your question 

Обратите внимание, что вы также можете преобразовать геометрию, в случае необходимости, в систему координат, которая вам необходимо использовать. Например, если геометрия хранится в базе данных в обычном формате lon/lat (EPSG code 4326), и вам необходимо получить ее в программе Pseudo Mercator Projection, обычно используемой в онлайн-картах (EPSG code 3857), то вам необходимо сделать это:

-- note the explicit ::geometry cast 
SELECT my_id, ST_AsText(ST_Transform(my_geom::geometry, 3857)) FROM my_table; 

Для удовольствия, вы можете попробовать это в PostGIS включено окно Postgres SQL запросов (используя геометрию из вашего вопроса):

возвращение WKT:

SELECT ST_AsText('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140'); 
-- returns: POINT(31.9497 35.9328) 

Return как Псевдо Mercator:

SELECT ST_AsText(ST_Transform('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140'::geometry, 3857)) 
-- returns: POINT(3556624.33499785 4291378.69099916) 

Возвращение в X, Y:

SELECT ST_X('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140'), 
    ST_Y('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140'); 
-- returns: 31.9497, 35.9328 
Смежные вопросы