OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2010-10-22 08:31:35

chnav
Member
From: Moscow, Russia
Registered: 2010-03-18
Posts: 2,961

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

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

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

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

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

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

Offline

#2 2010-10-22 08:41:23

KekcuHa
Member
From: Moscow
Registered: 2008-05-26
Posts: 607
Website

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

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

Offline

#3 2010-11-11 15:49:08

chnav
Member
From: Moscow, Russia
Registered: 2010-03-18
Posts: 2,961

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

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

Offline

#4 2010-11-11 20:18:32

x10kHz
Member
Registered: 2009-10-06
Posts: 138

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

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

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

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

Last edited by x10kHz (2010-11-11 20:18:57)

Offline

#5 2010-11-11 21:23:36

Sergey Astakhov
Member
From: St.Petersburg, Russia
Registered: 2009-11-13
Posts: 5,600

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

x10kHz wrote:

Советую посмотреть в сторону MongoDB

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

Offline

#6 2010-11-11 21:24:15

Ezhick
Member
From: Moscow
Registered: 2008-10-08
Posts: 2,508
Website

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

Sergey Astakhov wrote:
x10kHz wrote:

Советую посмотреть в сторону MongoDB

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

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

Offline

#7 2010-11-11 22:19:32

x10kHz
Member
Registered: 2009-10-06
Posts: 138

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

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

В 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

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

Last edited by x10kHz (2010-11-11 22:28:20)

Offline

Board footer

Powered by FluxBB