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