You are not logged in.
- Topics: Active | Unanswered
Pages: 1
#1 2010-10-22 08:31:35
- chnav
- Member
- From: Russia / Kazakhstan
- Registered: 2010-03-18
- Posts: 3,165
Посоветуйте геобазу для программы
(Господа, прошу прощения за нубские вопросы)
Дано: знание C++, небольшие познания Python, очень древний опыт работы с базами данных dBase/Foxpro
Требуется: выбрать какое-то современное ядро для программы, планируется пре-процессинг (из-за удобства хотелось бы делать на 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 / Kazakhstan
- Registered: 2010-03-18
- Posts: 3,165
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,718
Re: Посоветуйте геобазу для программы
Советую посмотреть в сторону MongoDB
Пространственные запросы там есть? Если да, то можно пример?
Offline
#6 2010-11-11 21:24:15
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
Pages: 1