Проблема с SQLGeography STUnion и внутренними кольцами для рисования многоугольников в элементе управления BF Maps WPF
Я пишу приложение, использующее сервисы Bing API Spatial Data, чтобы взять список почтовых индексов и объединить их в один регион. У меня это в основном работает, но, кажется, есть проблемы с внутренними кольцами. Вместо того, чтобы а) считать внутреннюю область слишком маленькой и просто раздавить ее или б) правильно нарисовать внутреннее кольцо, кажется, что нужно соединить их, см. Пример ниже:
Этот внутренний полигон должен был быть просто "дырой" в регионе, но вместо этого он пытается соединить их.
В настоящее время у меня есть 2 подходящих метода. Тот, который расшифровывает ответ API для почтового индекса, переводит его в SqlGeography
а также STUnion()
Любые дополнительные кольца. и второй родительский метод, который STUnion
s результаты первого метода для мастера SqlGeography
объект, который содержит все почтовые индексы вместе, когда это сделано для региона.
Дайте мне знать, если вам нужна дополнительная информация.
1 ответ
Я подозреваю, что проблема заключается в том, как создается отверстие в элементе управления картой WPF, поскольку полигоны в этом элементе не поддерживают отверстия по умолчанию. Вместо этого обычной практикой создания отверстий в многоугольнике в элементе управления WPF является рисование линии, соединяющей все кольца. Вы должны выбрать точку на внешнем кольце, провести линию к первому внутреннему кольцу, нарисовать внутреннее кольцо, а затем нарисуйте линию назад к внешнему кольцу. Чтобы это работало, кольца должны быть замкнуты, а линии должны возвращаться назад. Затем обводка многоугольника скрывается, и для рисования контура используются полилинии.
Глядя на ваше изображение, кажется, что одно внутреннее кольцо пытается выполнить вышеупомянутое, чтобы создать второе внутреннее кольцо, но не отслеживает обратный путь к первому внутреннему кольцу, а вместо этого к внешнему кольцу.