Как работает proj4?
- gala-kt
- Участник
- Сообщения: 89
- Зарегистрирован: 26 июл 2010, 12:05
- Репутация: 6
- Откуда: Санкт-Петербург
Как работает proj4?
Вопрос по работе 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 и т.д.?
Предыстория: реализована связка 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 и т.д.?
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Как работает proj4?
Вы пытаетесь получить какой-то глубоко теоретический ответ, который вам, на самом деле, либо не нужен, либо не поможет.
Сформулируйте практическую задачу, которую пытаетесь решить.
Сформулируйте практическую задачу, которую пытаетесь решить.
- gala-kt
- Участник
- Сообщения: 89
- Зарегистрирован: 26 июл 2010, 12:05
- Репутация: 6
- Откуда: Санкт-Петербург
Re: Как работает proj4?
Даже если это теоретический ответ, мне он нужен и точно поможет.
Если переформулировать вопрос, будет примерно так:
Можно ли скормить mapproxy проекцию, описанную в proj4 не в epsg, а в esri? (чтобы не добавлять уже описанную проекцию из одного файла(esri) в другой(epsg)).
Если переформулировать вопрос, будет примерно так:
Можно ли скормить mapproxy проекцию, описанную в proj4 не в epsg, а в esri? (чтобы не добавлять уже описанную проекцию из одного файла(esri) в другой(epsg)).
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Как работает proj4?
Вот что говорит документация:
Ни про какие "esri" (вы имеете в виду ESRI WKT, он же *.PRJ?) там речи не идет.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.
- gala-kt
- Участник
- Сообщения: 89
- Зарегистрирован: 26 июл 2010, 12:05
- Репутация: 6
- Откуда: Санкт-Петербург
Re: Как работает proj4?
Нет-нет, я совсем не формат имею ввиду. Я говорю о файлах, в которых непосредственно описаны проекции. После установки proj4 в директории, куда библиотека установлена (usually /usr/local/share/proj), находятся следующие файлы:
# 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?
- 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
# 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?
Ну и добавьте, в чём проблема?
Spatial is now, more than ever, just another column- The Geometry Column.
- gala-kt
- Участник
- Сообщения: 89
- Зарегистрирован: 26 июл 2010, 12:05
- Репутация: 6
- Откуда: Санкт-Петербург
Re: Как работает proj4?
Добавить - проблемы нет никакой; добавлено и работает.
Непонятно просто, зачем тогда существует соседний с epsg файл esri. Было предположение, что я что-то не так делаю, не умею отправлять программу к этому файлу.
Непонятно просто, зачем тогда существует соседний с epsg файл esri. Было предположение, что я что-то не так делаю, не умею отправлять программу к этому файлу.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Как работает proj4?
Код: Выделить всё
>>> 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.
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Как работает proj4?
Ну так все достаточно очевидно: proj4 - сам по себе, а mapproxy - сам по себе. Речь же в данном случае не идет о взаимодействии с библиотекой на высоком уровне, когда ей, например, передается путь к файлу, а она возвращает объект с данными и свойствами. Поскольку proj4 делает только то, что его просят, происходит именно то, что предусмотрено автором mapproxy. И наличие каких-то компонентов в proj4 не означает, что они автоматически будут использоваться в любом софте, который его использует.
- gala-kt
- Участник
- Сообщения: 89
- Зарегистрирован: 26 июл 2010, 12:05
- Репутация: 6
- Откуда: Санкт-Петербург
Re: Как работает proj4?
Спасибо!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей