You are not logged in.

Announcement

*** NOTICE: By 30th of September 2022 the forum.openstreetmap.org will be retired, please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators. We expect the migration of data will be finished by that date, you can follow its progress here.***

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

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,280

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

(Господа, прошу прощения за нубские вопросы)
Дано: знание 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: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,280

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,790

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