Таблица "spatial_ref_sys": порядок записи координат

vicreal
Новоприбывший
Сообщения: 14
Зарегистрирован: 12 мар 2020, 19:45
Репутация: 0
Откуда: Российская Федерация

Таблица "spatial_ref_sys": порядок записи координат

Сообщение vicreal » 12 янв 2021, 21:10

В процессе установки PostGIS создаётся таблица "spatial_ref_sys" с системами координат.
Таблица имеет поля "srtext" и "proj4text". Как по этим данным определить порядок записи координат для определённого SRID ?

Например, возьмём классического сферического Меркатора (SRID = 3857 = порядок XY):
PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs
СК-42, 6-градусная зона №8 (SRID = 28408 = порядок YX):
PROJCS["Pulkovo 1942 / Gauss-Kruger zone 8",GEOGCS["Pulkovo 1942",DATUM["Pulkovo_1942",SPHEROID["Krassowsky 1940",6378245,298.3,AUTHORITY["EPSG","7024"]],TOWGS84[23.92,-141.27,-80.9,0,0.35,0.82,-0.12],AUTHORITY["EPSG","6284"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4284"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",45],PARAMETER["scale_factor",1],PARAMETER["false_easting",8500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","28408"]]
+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs
Классическая географическая система координат (SRID = 4326 = порядок = YX):
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
+proj=longlat +datum=WGS84 +no_defs
Какие параметры в полях "srtext" и "proj4text" отвечают за порядок записи координат ?
Последний раз редактировалось vicreal 12 янв 2021, 21:48, всего редактировалось 1 раз.

tikhpetr
Гуру
Сообщения: 1081
Зарегистрирован: 30 окт 2014, 16:33
Репутация: 153
Откуда: г. Жуковский МО

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение tikhpetr » 12 янв 2021, 21:42

Извините, я не по сути вопроса. Заметил ошибку: Москва - 7 зона(28407)

vicreal
Новоприбывший
Сообщения: 14
Зарегистрирован: 12 мар 2020, 19:45
Репутация: 0
Откуда: Российская Федерация

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение vicreal » 12 янв 2021, 21:47

Извините, я не по сути вопроса. Заметил ошибку: Москва - 7 зона(28407)
Да, я тоже обратил внимание. Исправил.

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение gamm » 12 янв 2021, 22:14

не очень понятно, что вы имеете в виду под XY (обычно для понятности пишут что-то типа Easting, Northing), но судя по всему, собака тут порылась.
vicreal писал(а):
12 янв 2021, 21:10
AXIS["X",EAST],AXIS["Y",NORTH]

vicreal
Новоприбывший
Сообщения: 14
Зарегистрирован: 12 мар 2020, 19:45
Репутация: 0
Откуда: Российская Федерация

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение vicreal » 12 янв 2021, 22:56

не очень понятно, что вы имеете в виду под XY (обычно для понятности пишут что-то типа Easting, Northing)
XY = сначала записывается горизонтальная координата (декартова ось X), затем вертикальная (декартова ось Y)
YX = сначала записывается вертикальная координата (декартова ось Y), затем горизонтальная (декартова ось X)
gamm писал(а):
12 янв 2021, 22:14
судя по всему, собака тут порылась.
AXIS["X",EAST],AXIS["Y",NORTH]
Для систем координат 28408 и 4326 характеристика AXIS отсутствует (см. выше).
Посему, нужен другой параметр, который присутствует у всех систем координат, либо более сложная логика идентификации порядка записи координат (на основе 2-3 параметров).

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение gamm » 13 янв 2021, 06:58

vicreal писал(а):
12 янв 2021, 22:56
горизонтальная координата (декартова ось X)
у геодезистов X идет на север, поэтому и стали использовать Easting, Northing
vicreal писал(а):
12 янв 2021, 22:56
Для систем координат 28408 и 4326 характеристика AXIS отсутствует (см. выше).
и я ровно об этом (см. выше) :mrgreen:
Если не указано, используется умолчание, как я понял.

vicreal
Новоприбывший
Сообщения: 14
Зарегистрирован: 12 мар 2020, 19:45
Репутация: 0
Откуда: Российская Федерация

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение vicreal » 14 янв 2021, 01:22

у геодезистов X идет на север, поэтому и стали использовать Easting, Northing
Согласно таблице "spatial_ref_sys", из 8500 систем координат 2032 системы имеют координаты XY, где X = EAST, а Y = NORTH.

Пример: SRID = 2014

Код: Выделить всё

PROJCS[...PARAMETER["false_easting",304800],PARAMETER["false_northing",0],
    UNIT["metre",1,AUTHORITY["EPSG","9001"]],
    AXIS["X",EAST],AXIS["Y",NORTH],AUTHORITY["EPSG","2014"]]
Есть даже географическая система координат (с широтой и долготой), у которой координаты записываются в порядке (по горизонтали, по вертикали) = (долгота, широта) = (longitude, latitude). Это SRID = 8902:

Код: Выделить всё

GEOGCS["RGWF96 (lon-lat)",DATUM["Reseau_Geodesique_de_Wallis_et_Futuna_1996",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","1223"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Longitude",EAST],AXIS["Latitude",NORTH],AUTHORITY["EPSG","8902"]]

gamm писал(а):
13 янв 2021, 06:58
и я ровно об этом (см. выше) :mrgreen:
Если не указано, используется умолчание, как я понял.
Да, похоже именно такая логика имеет место. Если кому интересно, вот такой SQL-запрос возвратит SRID всех систем координат с порядком записи координат (по горизонтали, по вертикали):

Код: Выделить всё

SELECT srid FROM spatial_ref_sys
WHERE replace(srtext, ' ', '') ~* 'AXIS\["[^"]*",(?:EAST|WEST)\],AXIS\["[^"]*",(?:NORTH|SOUTH)\]';

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение gamm » 14 янв 2021, 08:47

vicreal писал(а):
14 янв 2021, 01:22
Есть даже географическая система координат (с широтой и долготой), у которой координаты записываются в порядке (по горизонтали, по вертикали) = (долгота, широта) = (longitude, latitude).
речь была о том, что куда направлены долгота и широта, понятно всем. А вот куда направлен Х - нет. Поэтому и принято нынче использовать Easting, Northing, во избежание, так сказать :mrgreen:

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение Максим Дубинин » 14 янв 2021, 08:51

эээ, а кто это сказал что порядок осей описанный в вкт определяет то как они хранятся/записываются в данных?

Хранение регламентируется форматом, и в geojson и shp и wkt координаты пишутся строго долгота,широта и x,y

Например: https://tools.ietf.org/html/rfc7946
A position is an array of numbers. There MUST be two or more
elements. The first two elements are longitude and latitude, or
easting and northing, precisely in that order and using decimal
numbers.
Ну и спеку WKT почитать будет небесполезно:
http://docs.opengeospatial.org/is/18-01 ... r7.html#49
пристегивайтесь, турбулентность прямо по курсу

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение gamm » 14 янв 2021, 11:26

Максим Дубинин писал(а):
14 янв 2021, 08:51
geojson и shp и wkt координаты пишутся строго
вопрос ТС не относится к форматам файлов, как я понял. В PROJCS порядок управляется ключами.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение Максим Дубинин » 14 янв 2021, 12:41

как это не относится?
vicreal писал(а):
12 янв 2021, 21:10
Как по этим данным определить порядок записи координат
и строгий ответ - никак

ну либо я не понял о какой и куда записи тогда речь
пристегивайтесь, турбулентность прямо по курсу

vicreal
Новоприбывший
Сообщения: 14
Зарегистрирован: 12 мар 2020, 19:45
Репутация: 0
Откуда: Российская Федерация

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение vicreal » 14 янв 2021, 14:47

речь была о том, что куда направлены долгота и широта, понятно всем.
В примере выше (SRID = 8902) широта/latitude направлена вправо (на Восток), долгота/longitude - вверх (на Север) :lol:
Хранение регламентируется форматом, и в geojson и shp и wkt координаты пишутся строго долгота,широта и x,y
Всё не так однозначно. Что касается формата GeoJson - да, в спецификации порядок хранения координат задан жёстко - сначала горизонтальная координата (долгота/longitude/X), затем вертикальная (широта/latitude/Y).

Но в спецификации WKT порядок хранения координат не задан (не определён). В итоге порядок хранения определяется программными системами, реализующими этот формат. Например, в PostgreSQL/PostGis порядок хранения всегда (долгота/longitude/X, широта/latitude/Y). В MySQL - порядок хранения задаётся отдельным параметром, причём по умолчанию используется порядок, определяемый системой координат, а не строго (долгота/X, широта/Y).
эээ, а кто это сказал что порядок осей описанный в вкт определяет то как они хранятся/записываются в данных?
Нужно различать порядок хранения и порядок отображения (порядок записи).
Порядок хранения определяется форматом хранения геоданных (если спецификация определяет порядок, пример: GeoJson) или программной реализацией (если спецификация не определяет порядок, пример: WKT).
Порядок отображения (он же порядок записи) определяется самой системой координат. Вот об этом порядке и идёт речь в сабже.
и строгий ответ - никак
ну либо я не понял о какой и куда записи тогда речь
Насколько я понимаю, порядок осей, задаваемых параметрами AXIS в PROJCS, как раз и определяет порядок отображения/записи координат, задаваемый системой координат.
<axis order> identifies the order in which the coordinates of a point in a dataset are given and therefore is significant. In this document it is defined in the BNF as an optional attribute to allow backward compatibility with OGC 01-009, however it is recommended that it should be explicitly included in a CRS WKT string.

В PROJCS порядок управляется ключами.
Так PROJCS - это что, программа какая-то ?
Я думал, это просто один из параметров в формате WKT, отвечающий за описание проекции системы координат.
Последний раз редактировалось vicreal 14 янв 2021, 15:00, всего редактировалось 1 раз.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение Максим Дубинин » 14 янв 2021, 14:57

vicreal писал(а):
14 янв 2021, 14:47
Порядок отображения (он же порядок записи)
ок, но слово "запись" в посте максимально confusing. Для меня запись (write) это то, в процессе чего появляется то, что хранят (store). А для вас и правда запись - это отображение (representation). Ну да ладно.
пристегивайтесь, турбулентность прямо по курсу

vicreal
Новоприбывший
Сообщения: 14
Зарегистрирован: 12 мар 2020, 19:45
Репутация: 0
Откуда: Российская Федерация

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение vicreal » 14 янв 2021, 15:07

Для меня запись (write) это то, в процессе чего появляется то, что хранят (store).
В идеале пользователи программ и геодезисты всегда должны видеть и оперировать координатами, записанными в том единственном порядке, который задаёт сама система координат. А порядок записи координат в том или ином формате хранения - это должно быть скрыто от глаз пользователя/геодезиста (это уже удел программы).

Но поскольку вручную вводить в программную систему исходные гео-данные иногда приходится в одном из форматов хранения (чаще в WKT), то здесь и начинаются танцы с бубном...
Последний раз редактировалось vicreal 14 янв 2021, 16:45, всего редактировалось 1 раз.

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Таблица "spatial_ref_sys": порядок записи координат

Сообщение gamm » 14 янв 2021, 15:42

Спойлер
Максим Дубинин писал(а):
14 янв 2021, 14:57
А для вас и правда запись - это отображение (representation).
потому что здесь другие… как это… cultural references…
как говаривал один писатель :mrgreen:
P.S. не нашел тега offtop ...

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя