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

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

Добавлено: 12 янв 2016, 13:16
gala-kt
Вопрос по работе 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 и т.д.?

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

Добавлено: 12 янв 2016, 23:22
ericsson
Вы пытаетесь получить какой-то глубоко теоретический ответ, который вам, на самом деле, либо не нужен, либо не поможет.
Сформулируйте практическую задачу, которую пытаетесь решить.

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

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

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

Добавлено: 13 янв 2016, 21:36
ericsson
Вот что говорит документация:
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?) там речи не идет.

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

Добавлено: 16 янв 2016, 16:02
gala-kt
Нет-нет, я совсем не формат имею ввиду. Я говорю о файлах, в которых непосредственно описаны проекции. После установки 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?

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

Добавлено: 16 янв 2016, 17:29
Denis Rykov
Ну и добавьте, в чём проблема?

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

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

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

Добавлено: 16 янв 2016, 21:44
Denis Rykov

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

>>> 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'

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

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

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

Добавлено: 18 янв 2016, 13:52
gala-kt
Спасибо!