Посоветуйте геобазу для программы

(Господа, прошу прощения за нубские вопросы)
Дано: знание C++, небольшие познания Python, очень древний опыт работы с базами данных dBase/Foxpro :slight_smile:
Требуется: выбрать какое-то современное ядро для программы, планируется пре-процессинг (из-за удобства хотелось бы делать на Python), и финальная компиляция материала на C++. Т.е. желательна геобаза, имеющая интерфейсы к C++ и Python.

Операции препроцессинга - резка векторных данных по административным границам и присваивание их дереву Страна–>Регион–>…–>Микрорайон–>Улица. Т.е. минимальная единица деления - Микрорайон, в котором имеются объекты Улица.
Если я правильно понимаю, после препроцессинга в базе у каждого объекта надо иметь дополнительные атрибуты AdminLevel0, AdminLevel1…AdminLevel6, по которым и будет проводиться выборка на втором этапе.

В момент компиляции будет проводиться выборка всех объектов, принадлежащих отдельному Микрорайону, затем Микрорайоны собираются в Районы и т.д. вплоть до Страны.

Я понимаю что изучать придется много нового. Поэтому и спрашиваю, чтобы не метаться из стороны в сторону, а сразу учить то что нужно. Нужен, так сказать, пинок в правильном направлении. Например - “такая-то база геоданных, такой-то интерфейс для Python/C++, вот библиотека для нарезки, такой-то интерфейс SQL, примеры…” Пол-года назад я пытался всё реализовать самостоятельно на C++, а сейчас понимаю что изобретал велосипед, база, извиняюсь, получилась в оперативке в виде двумерного массива. А как дошел до нарезки - руки опустились.

Заранее спасибо.

Если речь идет о геоданных на основе ОСМ, то на сегодняшний день есть всего две базы, для которых существует инструментарий для импорта/экспорта: mySQL и PostgreSQL.
Крайне рекомендую смотреть в сторону последнего, т.к. в нем поддерживается геометрия.

KekcuHa
Всё забываю сказать большое СПАСИБО за наводку, с удовольствием изучаю PostgreSQL. Очень жалею что не сделал этого раньше.

опять sql) а я вот за noSQL!
Советую посмотреть в сторону MongoDB. Прочтите хотя бы эту рекламную хабрастатейку MongoDB или как разлюбить SQL)
Возможно это влияние моды, но мне больше нравится как сама идея уйти от таблиц к объектам, так и удобство использования этой бд, скорость и возможность легкой масштабируемости… не расскажу точно про скорость т.к. не сравнивал своими руками с постгри, но ИМХО можно добиться очень шустрой работы!

Почитайте мой топик… Данные OSM в MongoDB
некоторые идеи, исходнички и даже цифры)
там как раз скрипты на питоне есть… также и на С++ кодил тулзу, но ща завал полный на работе, смотрю там исходниками интересовались, никак в порядок их привести не могу…

PS: а еще есть очень шустрый асинхронный node.js - серверный java-script на быстром движке V8 и cloud9 облачная ide для него же… подсел как на наркоту

Пространственные запросы там есть? Если да, то можно пример?

Вроде как нету. Постгис тут вне конкуренции и рулит. имхо.

Навороченных примочек для задач осма и прочих географических задач там не так много, но внимание уделить ей стоит…

В MongoDB есть вот это Geospatial Indexing

Краткое содержание:
Есть 2д индексы и наверное можно делать быстро вот так:


объекты отсортированные по расстоянию от точки 50, 50
> db.places.find( { loc : { $near : [50,50] } } )

не более 20-ти объектов отсортированных по расстоянию от точки 50, 50
> db.places.find( { loc : { $near : [50,50] } } ).limit(20)

... запросы довольно простые и легко читаются)
> db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)

Bounds Queries


что у нас в прямоугольнике?)
> box = [[40, 40], [60, 60]]
> db.places.find({"loc" : {"$within" : {"$box" : box}}})

или в кружке...
> center = [50, 50]
> radius = 10
> db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})

есть geoNear


> db.runCommand( { geoNear : "places" , near : [ 50 , 50 ], num : 10,
... query : { type : "museum" } } );

Также они там что-то мутят… с версии 1.7 появилась New Spherical Model
Говорят земля не плоская, что-то мутят с координатами))

пока не разбирался, времени нету…

Есть класснаяпрезентация Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow) про Geospatial Indexing со 114-го слайда начинайте смотреть)

Вот еще что-то интересное по теме: Unleashing the power of geospatial indexing with Scala and MongoDB

Кодил для монго встроенные функции, которые работали с обычными коллекциями рассчитывали площадь, расстояние по земле…