Пересечение объектов

0 голосов
спросил 11 Дек, 07 от r0m7n (2,260 баллов) в категории Программные продукты Esri
    Привет всем.
Подскажите, как осуществить?
Есть тема с улицами, производим поиск сначало одной, потом на основе выбранной другую улицу, Так вот как показать их место пересечение?
Спасибо

ПС. сильно только не пинайте. image

12 Ответы

0 голосов
ответил 17 Дек, 07 от r0m7n (2,260 баллов)
люди, помогите кто-нибудь, как это сделать?
0 голосов
ответил 25 Дек, 07 от dindzilin (4,160 баллов)
Тебе с помощью Avenue описать? Так по моему никак...
    
0 голосов
ответил 26 Дек, 07 от r0m7n (2,260 баллов)
да, если не сложно.
0 голосов
ответил 26 Дек, 07 от dindzilin (4,160 баллов)
Вот не знаю на каком уровне ты в нем шаришь, попробую на пальцах :) Я делал приблизительно так, давно это уже было... Допустим ты уже выделил нужные тебе объекты в теме, по одним известным только тебе признакам... Соотв-но имеешь объект Bitmap... Создаешь пустой shape типа MultiPoint=>MP_Main. Берешь первый объект=>Sh_Main из выборки и в цикле делаешь следующее: есть такой метод у shape PointIntersection называется насколько помню... с помощью этого метода получаешь объект MultiPoint=> MP_Temp=Sh_Main.PointIntersection(Sh_Next) который содержит точки пересечения основного объекта с пересекаемым=>Sh_Next, затем объединяешь MP_Main.Union(MP_Temp) и затем Sh_Main.Union(Sh_Next), и так далее по оставшимся в выборке объектам. На выходе имеем объект MP_Main который содержит все точки пересечения объектов попавших в выборку. Далее на твое усмотрение, делай с этим объектом что хочешь, можно как графику добавить, можно BlinkShape сделать :) Возможно некоторые методы назвал неправильно, но приблизительно, насколько помню, уж давно ничего не писал на Avenue, где-то в старых архивах код остался, если не сможешь сам, могу пример прислать. Это я описал момент когда тема улиц линейная, если полигональная
алгоритм не сильно меняется, только метод пересечения объектов надо поменять на ShapeIntersection (по моему) и тип объекта результата на Polygon.
    
     image
0 голосов
ответил 26 Дек, 07 от geologic (39,860 баллов)
Нне очень понятно что вам надо. Просто отстроить точки пересечений? Это типовая ГИС-задача, полно скриптов. Поищите в коллекции ESRI по слову "intersect". Наиболее полноценный - polyint2pnt.ave, поскольку сохраняет атрибуты. Есть инструменты, что считают угол пересечения,  есть что делают вертексы и.т.п. - шерстил лет пять назад, и тогда было около десятка вариантов.
 
Ну и разумеется, есть всемогущий ЭдиТоолс, который строит пересечения виртуально - поскольку занимается линейной топологией в полном объеме. Версия его для AV давно уже бесплатная.
0 голосов
ответил 27 Дек, 07 от r0m7n (2,260 баллов)
Ребят, спасибо что подсказали.
сделаю для начала, как предложил geologic - покапаюсь в готовых сриптах(че-то я он них сразу не подумал).
geologic сильно не ругайся :) НГ на дворе :)
Еще раз спасибо
0 голосов
ответил 27 Дек, 07 от geologic (39,860 баллов)
Эт не ругань, а подарок, а я - дед Мороз :) Могу кстати выслать все эти скрипты, чтоб не быть голословным.
 
Некоторое раздражение есть, эт верно подмечено - постараюсь стерпеть до после НГ. Связано это с тем, что форум меняется - давно решенные задачи возникают заново как якобы новые... И некому подсказать, будто знатоки вымерли :( Ну а в FAQ или в поиск давно уже неприлично посылать :)
 
Лет через десять, если так пойдет, будут спрашивать как посмотреть шейп-файл и получать ответ на яве или бейсике :D
 
0 голосов
ответил 27 Дек, 07 от r0m7n (2,260 баллов)
ну думаю до этого не дойдет :)
если не сложно "Дед Мороз" :) то вот мое "мыло"
roman@tog.tmb.ru

спасибо
0 голосов
ответил 27 Дек, 07 от geologic (39,860 баллов)
Не я лучше здесь, мож еще кому пригодится
http://geologic.nm.ru/files/intersects.zip

CalculateAngleofIntersection.avx - всего лишь меряет угол двух линий;

Intersect2.avx - строит точки на пересечениях линий. Как я подозреваю, молча и может даже в графике - не помню уже :)

intersectPolyline.apr - пересекает а) одну тему внутри себя б) две темы между собой. Точек, как можно догадаться, не строит. Скорее всего атрибуты не сохраняет, поэтому я активно пользовал следующий скрипт:

polyint2pnt.ave - пересекает две темы, строит точки и приписывает атрибуты обоих линий в каждой точке. Это важно для таких задач как перекрестки;

PPL_Tools12.avx - одна из упомянутых "коллекций", которых также много - но эта точно строит пересечения линий (за исключением самопересечений). К тому же разбивает линии на точки и отрезки, притягивает точки к линиям, пишет координаты точек (что кстати требовалось в другой теме, по AM :D
0 голосов
ответил 27 Дек, 07 от r0m7n (2,260 баллов)
Ай, спасибо Айболит :)
Моя благодарность не знает границ :)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...