2016-05-12 6 views
0

Я пишу приложение, используя службы пространственных данных Bing API, чтобы взять список почтовых индексов и объединить их в один регион. У меня это в основном работает, но, похоже, проблемы с внутренними кольцами. Вместо того, чтобы а) сочтя внутреннюю область слишком мала, и просто давя его или б) правильно рисовать внутреннее кольцо, оно, кажется, хочет, чтобы соединить их, картина пример ниже:Проблема с SQLGeography STUnion и внутренние кольца для рисования полигонов на Bing-картах Управление WPF

enter image description here

Это interrior полигон должен был просто «дыра» в регионе, но вместо этого пытается их соединить.

В настоящее время у меня есть 2 подходящих метода. Тот, который расшифровывает ответ API для почтового индекса, переводит его на SqlGeography и STUnion() с любыми дополнительными кольцами. и второй родительский метод, который STUnion s - результаты первого метода для объекта-хозяина SqlGeography, который содержит все почтовые индексы вместе, когда он сделан для области.

Дайте мне знать, если вам нужна дополнительная информация.

ответ

0

Я подозреваю, что проблема связана с тем, как создается отверстие в элементе управления картой WPF, поскольку полигоны этого элемента управления по умолчанию не поддерживают отверстия. Вместо этого обычная практика создания дыр в полигоне в элементе управления WPF состоит в том, чтобы нарисовать линию, соединяющую все кольца. Вы бы выбрали точку на внешнем кольце, нарисуете линию на первое внутреннее кольцо, нарисуйте внутреннее кольцо и затем верните линию на внешнее кольцо. Чтобы это работало, кольца должны быть закрыты, и линии должны возвращаться назад. Затем штрих полигона скрыт, а полилинии используются для рисования контура.

Посмотрите на свое изображение, похоже, что одно внутреннее кольцо пытается сделать выше, чтобы создать второе внутреннее кольцо, но не обратное отслеживание первого внутреннего кольца, а вместо этого на внешнее кольцо.

+0

Есть ли какие-либо команды, которые я могу запустить на объекте 'SqlGeography', чтобы автоматически избавиться от внутренних колец? – Hershizer33

+0

Есть несколько вариантов для этого. Один из вариантов: http://gis.stackexchange.com/questions/17555/calculating-the-outer-boundary-of-several-geometry-objects-in-sql-server-2008. Другой вариант - создать функцию, которая создает многоугольник из внешнего кольца многоугольника. Я посмотрю вокруг, чтобы узнать, есть ли у меня какой-то код для этого. – rbrundritt

+0

Не удалось собрать функцию SQL для удаления внутренних колец из полигонов. Однако я видел вашу техническую поддержку по электронной почте. Похоже, вы только извлекаете первый многоугольник каждого почтового индекса, а не все полигоны. Установите значение 0 после значения «Postcode1» в вашем URL-адресе: 1. Это вернет несколько полигонов для каждого почтового индекса, который поможет заполнить некоторые из пустых областей. – rbrundritt