Конвертируем из pbf в sqlite

К скриптам на визуалбейсике понятие “нормально написанный софт” не относится :wink:

А также слава автора. И добрым молодцам урок кроссплатформенности.

Ясно, прикидываетесь.

Хорош, ругаться. Займёмся делом.

Если нужна именно эта утилита но чтоб работала под линуксом или ещё чем то так и напишите. До этого момента у меня заказчиков не было. Вы будете первым. Если найдётся гуру который умеет писать под вашу любимую операционку. То я ему с удовольствием помогу портировать эту штуку. Если гуру не найдется то должны появится очень уважительные причины, для того чтоб я, занялся портированием.

Вовсе нет. Последние года только такой и пишу (С++), если нет серьезного повода ограничиться конкретной платформой. Уж консольный софт вообще нет никакой причины писать платформозависимым.
deep125, вы сами просили замечаний и предложений, нет? :slight_smile:

Ох, это замечательно, но тепереча Spatialite включает в себя утилиты spatialite_osm_map, spatialite_osm_raw и spatialite_osm_net, которые парсят OSM XML и OSM PBF в Spatialite. Так что… Поздновато, имхо :slight_smile:

Читайте: https://www.gaia-gis.it/fossil/spatialite-tools/wiki?name=OSM+tools

Софт от того, что он “нормально написан” платформонезависимо, не становится автоматом платформонезависимым. Это прекрасная сказка о светлом будущем. Надо периодически тестировать и поддерживать желаемый зоопарк платформ. Без этого всё тухнет.

С очевидным спорить не буду :slight_smile: Просто - повторюсь - не вижу ни одной серьезной причины писать платформозависимый консольный код.
Add: Впрочем, “поддержка” обычно ограничена проверкой, что после внесения изменений VS/g++/clang способны переварить полет мысли. Светлое будущее уже рядом - может, вы не заметили его приход? ))

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

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

Зато код, написанный платформозависимо становится автоматом платформозависимым. И усилия, необходимые для портирования вендокода под другие системы совершенно несравнимы с усилиями, которые тратятся на поддержку. Хотя если код изначально написан без тени мысли что им кто-то когда-то будет пользоваться, поддержка также превратится в кошмар.

Странно, а я вижу. Знаете сколько занимает места, “платформонезависмый прект” на си, с общеизвестными именем “Hello word”?
По моим прикидкам больше чем этот. И всё равно его нельзя будет запустить на тех платформах которые чаще всего окружают вас (андроид, симбиан, win и тд) тоесть по умолчанию и без плясок с перепрошивками и рутами.
Дальше, сколько нужно времени чтобы проверить работоспособность на поддерживаемых платформах? И нужно ли мне это?

А быстродействие? Про него можно сразу забыть. Лишь бы работало без ошибок.

Я конечно не против платформонезависимости, покажите мне проект который одинаково хорошо работает и на windows и на линукс. Кстати меня этот аспект интересует с точки зрения среды разработки и отладки! Макефайлы не принимаются.

Молодцы конечно, незнал. Только я чтото не нашол исполнимых файлов. Хотелось бы пощупать на предмет быстродействия.

Пощупал на предмет быстродействия.

Московская область.

osmpbf2sqlite - 3 минуты
spatialite_osm_map -14 минут.

Знаю, поэтому и пишу - 4 строчки.

То, над чем работаю я, работает под Win, Linux и Mac. Консольные проекты также работают под Android без плясок и перепрошивок. ЧЯДНТ?
Симбиан не щупал, каюсь.

Видимо, не нужно, я не спорю :slight_smile: Просто, как справедливо заметил AMDmi3, потенциально кроссплатформенный код и изначально некроссплатформенный - это две большие разницы

Быстродействие-то тут при чем?

http://www.compucell3d.org/. Я туда впиливаю GPGPU, тоже кроссплатформенное, если что.

Разрабатываете в чем хотите, тестируете везде, в чем сложность? В плане сборки остановился на CMake, особых трудностей не испытываю.

Не нужно, и вас никто и не просит. Скажу даже больше - этим заниматься вредно. Под свои платформы проект собирают и тестируют те, кто этими платформами пользуется. От автора в общем случае требуется одна очень простая вещь - не завязываться на особенности одной платформы. Чтобы это условие выполнить, ни о каких линуксах и андроидах вообще знать не надо. А на практике получается что если это условие соблюдено, то и правок для того чтобы собрать проект на другой платформе потребуется полторы штуки - забытый #include добавить, да, может быть, поправить пути в системе сборки.

Переносимость никак не сказывается на быстродействии.

Я не уверен что навскидку назову проект который НЕ одинаково хорошо работает на windows и linux. Из того что я использую у себя на FreeBSD - почти всё кроссплатформенный софт, и его же я бы использовал на linux, window, macosx и вообще чём угодно, возникни у меня необходимость сменить систему.
Ну, допустим, те же firefox/chromium. В качестве апофеоза переносимости можно упомянуть http://scummvm.org/downloads. Ближе к телу - собственно, sqlite3. Из своего - например, всё, что я писал для OSM, включая streetmangler, tiletool и glosm.

А что не так с мейкфайлами? Вообще, CMake. Он даже проект для VS умеет генерировать. А разрабатывайте и отлаживайте в том же, в чём всегда.

Программисты все время путают кулхацкеров, с которыми они обмениваются кодом, с пользователями.

Чего только стоит одна только инструкция к xxx2xx.pl - вначале сделайте гет из svn.
:frowning:

Если судить по опыту работы с osm2pgsql, большая часть времени уходит на построение пространственных индексов. То есть, нужен ещё тест по выборке по bbox, произвольному полигону и всё такое.

Так это 4 строчки ваш код. А остальная куча текстовых файлов вокруг чтоб он работал на других платформах.
Просто опытному программисту написать эти 4 строчки на любимой платформе 1 минута времени. А теперь прикиньте сколько ещё нужно потратить времени чтоб назвать эти строчки многоплатформенными.

Я ещё не научился на андроиде консольные приложения запускать.

А кто этот патенциал будет оценивать и как? Если код востребован то он будет портирован независимо от того потенциально кроссплатформенный он или нет. А если никому не нужен то пусть он трижы будет кроссплатформенным толку ноль.

В чистом си отсуттвует уйма вещей которые нужны для написания работоспособной программы. Поэтому хорошая программа эта та которая использует потенциал операционки по максимуму. А не та которая может работать на всех известных операционках. Естественно я имею ввиду утилиты, а не монстры типа OpenOffice, которые могут позволить в себе держать свою операционку.

Вот видите вы даже об этом не задумываетесь. А для меня это очень важно. И не только для меня. Вы слышали например про CUDA.
Так она не на всех компьютерах в пределах одной операционки работает! Но тем не менее продукт очень даже востребован.

Мне нужен проект консольной утилиты, с поддержкой мультипоточности.

Это как? Разработка без отладки не бывает. А отладка без сборки не бывает. Или вы предлогаете держать два проекта? Один для всех а другой для себя плюс периодическая их синхронизация и проверка результата?