Как очень эффективно назначить широту / долготу городской границе, описываемой по форме? - PullRequest
1 голос
/ 05 мая 2010

У меня есть огромный шейп-файл из 36 000 непересекающихся полигонов (границ города). Я хочу легко определить полигон, в который попадает данный широту / долготу. Как лучше всего, если учесть, что он должен быть чрезвычайно вычислительно эффективным?

Я думал о создании таблицы поиска (tilex, tiley, polygone_id), где tilex и tiley являются идентификаторами плиток при уровнях масштабирования 21 или 22. Да, отсутствие точности использования номеров плиток и плоской проекции допустимо в моем применение.

Я бы предпочел не использовать расширение ГИС postgres, и я в порядке с программой, которая будет работать в течение 2 дней для генерации всех операторов INSERT.

Ответы [ 3 ]

1 голос
/ 06 мая 2010

Вставить заявления в чем? Вы используете другую пространственную базу данных или другую базу данных? Если вы хотите использовать Python, C или Java, вы можете использовать shapely, GEOS или JTS для написания собственного кода, чтобы делать то, что вы хотите, довольно просто.

В python используйте эту библиотеку, чтобы открыть шейп-файл http://indiemaps.com/blog/2008/03/easy-shapefile-loading-in-python/

тогда стройный http://gispython.org/shapely/docs/1.0/manual.html#contains проверить герметичность

Для Java используйте Geotools, который также включает JTS.

0 голосов
/ 06 мая 2010

QGIS / Vector tools имеет функцию, которую вы ищете

0 голосов
/ 05 мая 2010

Звучит так, как будто вы хотите BSP tree .По сути, вы делите область на все меньшие и меньшие многоугольники в виде дерева.

Преимущество состоит в том, что вам не нужно сравнивать координаты с каждым многоугольником позже.Это позволяет очень быстро найти правильный многоугольник.

...