Страница 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 для ліній не працює. Варто спробувати задатись координатами вершин.