RU:Osm2pgsql/o5m

From OpenStreetMap Wiki
Jump to: navigation, search
Доступные языки — Osm2pgsql/o5m
Afrikaans Alemannisch aragonés asturianu azərbaycanca Bahasa Indonesia Bahasa Melayu Bân-lâm-gú Basa Jawa Baso Minangkabau bosanski brezhoneg català čeština dansk Deutsch eesti English español Esperanto estremeñu euskara français Frysk Gaeilge Gàidhlig galego Hausa hrvatski Igbo interlingua Interlingue isiXhosa isiZulu íslenska italiano Kiswahili Kreyòl ayisyen kréyòl gwadloupéyen kurdî latviešu Lëtzebuergesch lietuvių magyar Malagasy Malti Nederlands Nedersaksies norsk norsk nynorsk occitan Oromoo oʻzbekcha/ўзбекча Plattdüütsch polski português română shqip slovenčina slovenščina Soomaaliga suomi svenska Tiếng Việt Türkçe Vahcuengh vèneto Wolof Yorùbá Zazaki српски / srpski беларуская български қазақша македонски монгол русский тоҷикӣ українська Ελληνικά Հայերեն ქართული नेपाली मराठी हिन्दी অসমীয়া বাংলা ਪੰਜਾਬੀ ગુજરાતી ଓଡ଼ିଆ தமிழ் తెలుగు ಕನ್ನಡ മലയാളം සිංහල ไทย မြန်မာဘာသာ ລາວ ភាសាខ្មែរ ⵜⴰⵎⴰⵣⵉⵖⵜ አማርኛ 한국어 日本語 中文(简体)‎ 吴语 粵語 中文(繁體)‎ ייִדיש עברית اردو العربية پښتو سنڌي فارسی ދިވެހިބަސް

Интерфейс импорта o5m позволяет osm2pgsql читать данные из файлов в формате o5m.

Инсталляция

Процесс описан в RU:osm2pgsql#Из_исходников_(общее), за одним исключением:

После получения исходников из svn, скачайте интерфейс импорта o5m 2012-10-14. Затем распакуйте файлы и переместите их в субдиректорию osm2pgsql. Два файла будут новыми: parse-o5m.c и parse-o5m.h, и два уже существующими, и должны быть перезаписаны: osm2pgsql.c и Makefile.am.

Интерфейс импорта был успешно протестирован на osm2pgsql revision 26278. Как обычно: никаких гарантий, to the extent permitted by law.

В случае обычного исходного файла osm2pgsql.c с ревизии 26278, требуется внести изменения. Дополнительные строки (помечены знаком +) нужны для работы интерфейса импорта:

***************
*** 54,59 ****
--- 54,60 ----
  #include "sprompt.h"
  #include "parse-xml2.h"
  #include "parse-primitive.h"
+ #include "parse-o5m.h"
  
  #ifdef BUILD_READER_PBF
  #  include "parse-pbf.h"
***************
*** 174,179 ****
--- 175,181 ----
  #ifdef BUILD_READER_PBF
      printf("              \t\tpbf       - OSM binary format.\n");
  #endif
+     printf("              \t\to5m       - OSM binary format.\n");
      printf("   -O|--output\t\tOutput backend.\n");
      printf("              \t\tpgsql - Output to a PostGIS database. (default)\n");
      printf("              \t\tgazetteer - Output to a PostGIS database suitable for gazetteer\n");
***************
*** 520,525 ****
--- 522,529 ----
          streamFile = &streamFileXML2;
        } else if (strcmp("primitive", input_reader) == 0) {
          streamFile = &streamFilePrimitive;
+       } else if (strcmp("o5m", input_reader) == 0) {
+         streamFile = &streamFileO5m;
  #ifdef BUILD_READER_PBF
        } else if (strcmp("pbf", input_reader) == 0) {
          streamFile = &streamFilePbf;
***************
*** 550,555 ****
--- 554,563 ----
          /* if input_reader is not forced by -r switch try to auto-detect it
             by file extension */
          if (strcmp("auto", input_reader) == 0) {
+           if (strcasecmp(".o5m",argv[optind]+strlen(argv[optind])-4) == 0 ||
+               strcasecmp(".o5c",argv[optind]+strlen(argv[optind])-4) == 0) {
+             streamFile = &streamFileO5m;
+           } else
  #ifdef BUILD_READER_PBF
            if (strcasecmp(".pbf",argv[optind]+strlen(argv[optind])-4) == 0) {
              streamFile = &streamFilePbf;

В Makefile.am вам просто нужно добавить parse-o5m.c и parse-o5m.h в список компиляции.

Дополнительная информация

Для дополнительной информации о формате o5m смотрите следующие Вики страницы:

  • o5m
  • osmconvert – конвертация между различными форматами данных, вырезание регионов
  • osmfilter – фильтрация указанных объектов или тегов OSM, делает оффлайновый taginfo

Бенчмарки

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

Добавляйте сюда ваши результаты бенчмарков.