Страница 1 из 1
					
				st_difference и 180 мередиан
				Добавлено: 21 июн 2017, 13:09
				 alex_069
				Ситуация такова:
есть полигон некой области в районе Чукотского автономного округа
при помощи st_difference из него вычитаю полигон, включающий часть России, не полностью пересекающий первый полигон. в результате получаю "расколбас" данных. Что-то подсказывает, что это возникает при проходе через 180 мередиан. Кто-нибудь сталкивался с такой проблемой?
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 21 июн 2017, 13:17
				 trir
				обсуждалось, нужно просто выбрать подходящую проекцию
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 22 июн 2017, 08:14
				 alex_069
				trir писал(а):обсуждалось, нужно просто выбрать подходящую проекцию
найти не удалось, не направите в направлении топика с обсуждением?
 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 22 июн 2017, 08:27
				 trir
				
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 23 июн 2017, 08:57
				 alex_069
				
Благодарю.
Попробовал использовать цилиндрическую проекцию для использования st_difference, но результат не оправдал ожиданий. Проблема сохраняется. 
Запрос вида: 
SELECT st_astext(st_transform(ST_Difference(st_transform(ST_GeomFromText(A,4326),MySRID), st_transform(ST_GeomFromText(B,4326),MySRID)),4326)
SRID создал из строки proj4 из темы, на которую Вы дали ссылку.
Код: Выделить всё
+proj=eqc +lat_0=0 +lon_0=100 +lat_ts=60 +x_0=0 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs
 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 23 июн 2017, 09:00
				 trir
				а что получается, если не переводить обратно в исходную проекцию?
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 23 июн 2017, 09:14
				 alex_069
				trir писал(а):а что получается, если не переводить обратно в исходную проекцию?
Что-то получается, но где отобразить данные в такой проекции?)
 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 23 июн 2017, 09:27
				 alex_069
				Загнал в обычный сервис по построению графика по точкам. Результат визуально верный. Теперь встаёт вопрос, что же не так с st_transform?
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 23 июн 2017, 09:53
				 trir
				где отобразить данные в такой проекции?
в QGIS например, а в чём нужно?
Результат визуально верный. Теперь встаёт вопрос, что же не так с st_transform?
просто при трансформации происходит нарушение топологии, что бы его избежать, нужно разрезать полигон по 180 мередиан
 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 23 июн 2017, 10:19
				 alex_069
				trir писал(а):где отобразить данные в такой проекции?
в QGIS например, а в чём нужно?
Результат визуально верный. Теперь встаёт вопрос, что же не так с st_transform?
просто при трансформации происходит нарушение топологии, что бы его избежать, нужно разрезать полигон по 180 мередиан
 
Да, вы правы. Если разрезать полигон по 180 меридиану, всё становится на свои места. Спасибо!
 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 26 июн 2017, 09:47
				 alex_069
				Аналогично 180 меридиану, на пересечении с экватором с использованием st_difference получаю ошибочную географию. Если в первом случае помогала функция ST_Shift_Longitude, то какая поможет в этом?
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 26 июн 2017, 09:52
				 trir
				а проекция какая?
			 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 26 июн 2017, 09:55
				 alex_069
				trir писал(а):а проекция какая?
4326
 
			
					
				Re: st_difference и 180 мередиан
				Добавлено: 27 июн 2017, 08:15
				 trir
				Меркатор должен помочь