Расстояние

0 голосов
спросил 16 Май, 10 от Swallow (2,740 баллов) в категории Программные продукты Esri
Можно как нибудь программно вычислить расстояние между двумя объектами? Ну либо вообще как нибудь. В ArcMap'е. Подскажите пожалуйста, либо ссылочку где можно почитать как это сделать. А то что то искал и ничего не нашел на эту тему.    

28 Ответы

0 голосов
ответил 16 Май, 10 от Swallow (2,740 баллов)
    Так получается если в приложение написаном на VB добавлена карта запустить макрос в ней никак не получится?
0 голосов
ответил 16 Май, 10 от TDenis (42,620 баллов)
Почему вы решили что макрос запускается "в ней", а не, скажем, в PageLayoutControl или TOCControl? А быть может макрос запускается в кнопке "Добавить данные"?
Отсыпьте и мне, пожалуйста.

Макрос запускается не "в ней". Поддержка макросов встраивается в приложение. Если вы добавите поддержку макросов в своё приложение, то сможете писать и запускать свои макросы, которые, возможно, смогут как-то общаться с разными контролами приложения, в том числе и с вашим mapcontrol, одним или несколькими.
0 голосов
ответил 16 Май, 10 от Swallow (2,740 баллов)
Почему вы решили что макрос запускается "в ней", а не, скажем, в PageLayoutControl или TOCControl? А быть может макрос запускается в кнопке "Добавить данные"?
Отсыпьте и мне, пожалуйста.

Макрос запускается не "в ней". Поддержка макросов встраивается в приложение. Если вы добавите поддержку макросов в своё приложение, то сможете писать и запускать свои макросы, которые, возможно, смогут как-то общаться с разными контролами приложения, в том числе и с вашим mapcontrol, одним или несколькими.

    Ну незнаю) вопрос задал как смог, тем более с этим в жизни не работал, да и программировать не мое) Почитаю то что вы мне дали, спасибо. Может быть пойду другим путем и не буду использовать макросы.
0 голосов
ответил 16 Май, 10 от TDenis (42,620 баллов)
Вы пишете такую грандиозную систему, которая без интегрированного языка программирования никак не обойдётся?


Если вы делаете своё (stand-alone) приложение, использующее компоненты ESRI, вам не нужны никакие макросы. Всякие там полигоны создавать и экран обновлять можно и из обычных языков. Надо всего лишь добавить ссылки на сборки, содержащие нужные компоненты. И создавать/вызывать их из VB/C#/F#/C++/Delphi и всего, что поддерживает COM.
0 голосов
ответил 16 Май, 10 от Swallow (2,740 баллов)
Вы пишете такую грандиозную систему, которая без интегрированного языка программирования никак не обойдётся?


Если вы делаете своё (stand-alone) приложение, использующее компоненты ESRI, вам не нужны никакие макросы. Всякие там полигоны создавать и экран обновлять можно и из обычных языков. Надо всего лишь добавить ссылки на сборки, содержащие нужные компоненты. И создавать/вызывать их из VB/C#/F#/C++/Delphi и всего, что поддерживает COM.

    Вот и пытаюсь так сейчас сделать. Просто начал с другого пути и почти доделал, сейчас буду переделывать)
0 голосов
ответил 16 Май, 10 от Swallow (2,740 баллов)
Dim pExtent As ESRI.ArcGIS.Geometry.IEnvelope
pExtent = pFeature.Shape.Envelope
AxMapControl1.Extent = pExtent

Вот есть у меня такой код экстента. Шейп достаточно маленький и екстнент до него уж слишком близко получается. Можно ли как нибудь увеличить что нибудь чтоб экстент подальше чуток был?
0 голосов
ответил 16 Май, 10 от TDenis (42,620 баллов)
Объясните, что мешает воспользоваться справкой по IEnvelope?
IEnvelope.Expand

И не всегда считается хорошей практикой приближать к объекту. Обычно, если объект находится за пределами экстента, то перемещают карту и подсвечивают объект. Если объект хотя бы частично виден в текущем экстенте, то просто подсвечивают. Масштаб же остаётся тот, который был задан пользователем.
Ну либо делают плавный зум, как умеет ArcGIS Server во всяких яваскриптах/флексах/сильверлайтах.
    
0 голосов
ответил 16 Май, 10 от Swallow (2,740 баллов)
Спасибо. Сделал с помощью экспенд. То что вы другое описали врядли сам сделаю)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...