Как работает proj4?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
gala-kt
Участник
Сообщения: 89
Зарегистрирован: 26 июл 2010, 12:05
Репутация: 6
Откуда: Санкт-Петербург

Как работает proj4?

Сообщение gala-kt » 12 янв 2016, 13:16

Вопрос по работе proj4: каким образом запущенное ПО обращается к библиотеке proj4 и понимает, в каком именно файле (epsg, esri, esri.extra, etc.) искать проекцию?
Предыстория: реализована связка PostGIG - mapnik - mapproxy, для визуализации данных запущен demo-сервер. То есть существуют уже размещенные в базе данные в EPSG:4326, в файле конфигурации .yaml в качестве рендера указан mapnik, сформирован xml. Утилита serve-develop использует тот самый .yaml. Для того, чтобы перепроецировать данные при генерации кэша в какую-нибудь замысловатую проекцию (типа ESRI:54008), необходимо описать ее в блоке grids в .yaml, предварительно прописать в файле epsg в директории proj, несмотря на то, что в файле esri описание существует.
Так возник вопрос: каким образом mapproxy использует proj4? Почему обращается только к epsg, игнорируя esri, esri.extra и т.д.?

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Как работает proj4?

Сообщение ericsson » 12 янв 2016, 23:22

Вы пытаетесь получить какой-то глубоко теоретический ответ, который вам, на самом деле, либо не нужен, либо не поможет.
Сформулируйте практическую задачу, которую пытаетесь решить.

Аватара пользователя
gala-kt
Участник
Сообщения: 89
Зарегистрирован: 26 июл 2010, 12:05
Репутация: 6
Откуда: Санкт-Петербург

Re: Как работает proj4?

Сообщение gala-kt » 13 янв 2016, 10:17

Даже если это теоретический ответ, мне он нужен и точно поможет.
Если переформулировать вопрос, будет примерно так:
Можно ли скормить mapproxy проекцию, описанную в proj4 не в epsg, а в esri? (чтобы не добавлять уже описанную проекцию из одного файла(esri) в другой(epsg)).

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Как работает proj4?

Сообщение ericsson » 13 янв 2016, 21:36

Вот что говорит документация:
srs

proj_data_dir

MapProxy uses Proj4 for all coordinate transformations. If you need custom projections or need to tweak existing definitions (e.g. add towgs parameter set) you can point MapProxy to your own set of proj4 init files. The path should contain an epsg file with the EPSG definitions.

The configured path can be absolute or relative to the mapproxy.yaml.
Ни про какие "esri" (вы имеете в виду ESRI WKT, он же *.PRJ?) там речи не идет.

Аватара пользователя
gala-kt
Участник
Сообщения: 89
Зарегистрирован: 26 июл 2010, 12:05
Репутация: 6
Откуда: Санкт-Петербург

Re: Как работает proj4?

Сообщение gala-kt » 16 янв 2016, 16:02

Нет-нет, я совсем не формат имею ввиду. Я говорю о файлах, в которых непосредственно описаны проекции. После установки proj4 в директории, куда библиотека установлена (usually /usr/local/share/proj), находятся следующие файлы:
  • epsg
    esri
    esri.extra
    GL27
    IGNF
    nad27
    nad83
    nad.lst
    other.extra
    pj_out27.dist
    pj_out83.dist
    proj_def.dat
    td_out.dist
    test27
    test83
    testvarious
    world
В файле esri в формате proj4 описана синусоидальная проекция на весь мир:
# World Sinusoidal
<54008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <>

Однако, mapproxy не будет ее видеть, пока я не добавлю строку с описанием <54008> в файл epsg.
Вопрос: можно ли каким-то образом настроить mapproxy таким образом, чтоб он обращался не только к файлу epsg, но и к файлу esri или esri.extra?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Как работает proj4?

Сообщение Denis Rykov » 16 янв 2016, 17:29

Ну и добавьте, в чём проблема?
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
gala-kt
Участник
Сообщения: 89
Зарегистрирован: 26 июл 2010, 12:05
Репутация: 6
Откуда: Санкт-Петербург

Re: Как работает proj4?

Сообщение gala-kt » 16 янв 2016, 18:01

Добавить - проблемы нет никакой; добавлено и работает.
Непонятно просто, зачем тогда существует соседний с epsg файл esri. Было предположение, что я что-то не так делаю, не умею отправлять программу к этому файлу.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Как работает proj4?

Сообщение Denis Rykov » 16 янв 2016, 21:44

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

>>> from mapproxy.proj import Proj
>>> proj = Proj(init='esri:%d' % 54008)
>>> proj.srs
' +init=esri:54008 +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs +towgs84=0,0,0'
Spatial is now, more than ever, just another column- The Geometry Column.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Как работает proj4?

Сообщение ericsson » 17 янв 2016, 00:20

Ну так все достаточно очевидно: proj4 - сам по себе, а mapproxy - сам по себе. Речь же в данном случае не идет о взаимодействии с библиотекой на высоком уровне, когда ей, например, передается путь к файлу, а она возвращает объект с данными и свойствами. Поскольку proj4 делает только то, что его просят, происходит именно то, что предусмотрено автором mapproxy. И наличие каких-то компонентов в proj4 не означает, что они автоматически будут использоваться в любом софте, который его использует.

Аватара пользователя
gala-kt
Участник
Сообщения: 89
Зарегистрирован: 26 июл 2010, 12:05
Репутация: 6
Откуда: Санкт-Петербург

Re: Как работает proj4?

Сообщение gala-kt » 18 янв 2016, 13:52

Спасибо!

Ответить

Вернуться в «Веб-картография»

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

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