Страница 1 из 2

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

Добавлено: 12 янв 2021, 21:10
vicreal
В процессе установки 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" отвечают за порядок записи координат ?

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

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

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

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

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

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

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

Добавлено: 12 янв 2021, 22:56
vicreal
не очень понятно, что вы имеете в виду под 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 параметров).

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

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

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

Добавлено: 14 янв 2021, 01:22
vicreal
у геодезистов 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)\]';

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

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

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

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

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

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

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

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

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

Добавлено: 14 янв 2021, 14:47
vicreal
речь была о том, что куда направлены долгота и широта, понятно всем.
В примере выше (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, отвечающий за описание проекции системы координат.

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

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

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

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

Но поскольку вручную вводить в программную систему исходные гео-данные иногда приходится в одном из форматов хранения (чаще в WKT), то здесь и начинаются танцы с бубном...

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

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