Страница 1 из 1
					
				MapInfo:  SQL запрос (параллельные линии)
				Добавлено: 13 мар 2008, 04:15
				 Winsent
				Добрый день, возникла такая проблемма: 
при объединении 2х таблиц возникли дубли линий, они не пересекаются, а находятся оч. рядом друг с другом. 
Поэтому возникла необходимость выбрать линии которые находятся на определенном растоянии друг от друга. 
По наивности пробывал с таким условием: 
Код: Выделить всё
distance ( CentroidX ( old.obj ) , CentroidY ( old.obj ) , CentroidX (new.obj ) , CentroidY ( new.obj ) , "m" ) < 00,1 
непомогло.)
 
			
					
				
				Добавлено: 13 мар 2008, 04:18
				 Максим Дубинин
				а центроид линии это что такое?
может получится через буфер нужного размера?
			 
			
					
				
				Добавлено: 13 мар 2008, 04:28
				 Winsent
				sim писал(а):а центроид линии это что такое?
 Забыл пояснить, что я дилетант в какой-то степени.
может получится через буфер нужного размера?
 Ну хорошо, попробую. Правда плохо еще себе представляю.
 
			
					
				
				Добавлено: 13 мар 2008, 04:38
				 Максим Дубинин
				Центроидом обычно называют центральную точку полигона, к которой привязывается к нему атрибутика. Я не уверен насчет Mapinfo, возможно центроид там - просто геометрический центр.
А линии - геометрические дубли, которые просто смещены? Или они все-таки немного разные? Если первое, то может просто рассчитать длины для всех линий, дальше отобрать по точно совпадающим длинам?
			 
			
					
				
				Добавлено: 13 мар 2008, 04:48
				 Winsent
				Те линни которые совпадали по длине или пересекались, я екнул. Остались те которые видимо искажены и не пересекаются. Я тут впринципе посмотрел буферы, должно получиться. Попробую и отпишусь. Спасибо (за скорость, и точность)) в рекомендациях).
			 
			
					
				
				Добавлено: 13 мар 2008, 09:28
				 KolesovDmitry
				sim писал(а):а центроид линии это что такое?
В MapInfo центроидом линии будет центр ограничивающего прямоугольника.
 
			
					
				
				Добавлено: 13 мар 2008, 11:30
				 Winsent
				Да, аодскажите еще такой момен, можно ли делать запрос на выборку из трех таблиц 
Код: Выделить всё
SELECT * FROM old, buff, new WHERE buff.Obj Intersects new.obj AND old.Dlina=new.Dlina_c
Мне почему-то говорит, что неправильно задано условие объединения (WHERE)
 
			
					
				
				Добавлено: 13 мар 2008, 11:41
				 lalex
				Гляньте внимательно орфографию запроса - названия таблиц
И больше так не делайте! 

Через буферы и центроиды не знаю, но полноценно такие задачи решаются сравнением координат всех вертексов с учетом допуска. В ГИС обычно есть процедуры сближения близких вертексов, при задании большой дискретности пространства (равной допуску анализа). Это работает для покрытий ArcINFO, в MapInfo не знаю.
 
			
					
				
				Добавлено: 13 мар 2008, 11:44
				 Winsent
				lalex писал(а):Гляньте внимательно орфографию запроса - названия таблиц
И больше так не делайте! 

 
Да нет, дело к сожалению не в орфографии, это я тут очепятался (когда переименовывал таблицы для удобочитаемости).
 
			
					
				
				Добавлено: 13 мар 2008, 15:39
				 lalex
				Тогда не знаю. На взгляд SQL-щика остальное правильно, наверно, чисто мапинфовские штучки. Гляньте вот тут еще, мож что навеет - но это стандарт OGIS SQL, не факт что мапинфо его поддерживает. 
http://citforum.ru/database/articles/spatial/#3_5 
			
					
				
				Добавлено: 06 июн 2008, 14:59
				 dotzent
				CentroidX і CentroidY для ліній не працює. Варто спробувати задатись координатами вершин.