Страница 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
				Спасибо!