Проблема с SQLGeography STUnion и внутренними кольцами для рисования многоугольников в элементе управления BF Maps WPF

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам