OpenStreetMap рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреБрдирд┐рдпрд╛ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛ рдмрдирд╛рдПрдБ

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


рдСрдирд▓рд╛рдЗрди рдиреЗрд╡рд┐рдЧреЗрд╢рди (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдФрд░ рдСрдлрд╝рд▓рд╛рдЗрди) рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдСрдирд▓рд╛рдЗрди рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред Google, рдмрд┐рдВрдЧ, рдЖрджрд┐ рд╕реЗ рд╕реЗрд╡рд╛рдПрдБ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдХрд╛рд░реНрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИред рдореБрдХреНрдд рд▓реЛрдЧреЛрдВ, рдЬреИрд╕реЗ рдХрд┐ OpenStreetMap, рдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдСрдирд▓рд╛рдЗрди рдореИрдк (рдорд╛рдирдЪрд┐рддреНрд░ рдЯрд╛рдЗрд▓) рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛ред Google рдФрд░ Skobbler рдХреЗ рдХрд░реАрдм рдПрдХ рд╢реИрд▓реАред OpenStreetMap рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ред


рдкреНрд░рддрд┐рдмрдВрдз


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрд▓ (рдХрд╛рд░реНрдб рдЯрд╛рдЗрд▓) рдХрд╛ рднрдВрдбрд╛рд░рдг рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд░рд╣рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ 14 рд╡реЗрдВ рдЬрд╝реВрдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ 267 583 488 рдЯрд╛рдЗрд▓реНрд╕ (~ 4 14 ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд▓рд┐рдирдХреНрд╕ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦреЗрдВ: df -i
рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИред

рд▓реЛрд╣рд╛ рдФрд░ рдзреБрд░рд╛


рд╕рд░реНрд╡рд░ рдЬрдирд░реЗрдЯрд┐рдВрдЧ рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдбреЗрдЯрд╛: рд╕реБрдкрд░рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрд╡рд░ред 2GHz рдореЗрдВ 24 рдХреЛрд░, 64 рдЬреАрдмреА рд░реИрдо, рдПрдЪрдбреАрдбреА 2.7 рдЯреАрдмреАред рдмреЛрд░реНрдб рдкрд░ Ubuntu 13.04 рдХреЗ рд╕рд╛рдеред
рд╕рд░реНрд╡рд░ рдЬрд┐рд╕ рдкрд░ рдкреАрдврд╝реА рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рд╣реИ: 1.8GHz рдкрд░ 8 рдХреЛрд░, 27 рдЬреАрдмреА рд░реИрдо, 130 рдЬреАрдмреА рдПрд╕рдПрд╕рдбреАред

рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕реЗрдЯрдЕрдк


рдореИрдВ рд╕реНрдерд╛рдкрдирд╛ рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдирд╣реАрдВ рд░рд╣реВрдВрдЧрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрдиреНрдп рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ (рдиреАрдЪреЗ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ)ред
рдЗрдВрд╕реНрдЯреЙрд▓:


рдбрд┐рдЬрд╝рд╛рдЗрди


рдЖрджреЗрд╢ рдореЗрдВ рдкреНрд░рдмрд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд┐рдпрд╛ рдЦреБрд▓реЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯрд╛рдЗрд▓ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк MBTiles рдкреНрд░рд╛рд░реВрдк рд╣реИред рдпрд╣ рдПрдХ рд╕рд░рд▓ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЦреЛрдВ рдЯрд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЯрд╛рдЗрд▓рдорд┐рд▓ рд╕рдВрдкрд╛рджрдХ рдЕрдкрдиреА рд╢реИрд▓реА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЖрдкрдХреЛ MBTiles рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирдХреНрд╢реЗ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рд╛рдЗрдЯ (рджреЗрд╢) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдгрдорд╛рд▓рд╛ рд╡рд╛рд▓реЗ рдХрдИ рджреЗрд╢реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ: рд▓реИрдЯрд┐рди, рд╕рд┐рд░рд┐рд▓рд┐рдХ, рдЕрд░рдмреА, рдЪрд┐рддреНрд░рд▓рд┐рдкрд┐ред рдЗрд╕рд▓рд┐рдП рдЖрдк рд╡рд┐рднрд┐рдиреНрди рджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рд╢реИрд▓реА рдХреЗ рдЧрд▓рдд рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдПрдВрдЧреЗред рдореИрдВ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдкреАрдврд╝реА рдХрд╛ рд╕рдордп рдмрд╣реБрдд рдмрдврд╝ рдЧрдпрд╛ рд╣реИред

PostgreSQL рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдЯреНрдпреВрдирд┐рдВрдЧ PostgreSQL

рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо /etc/postgresql/9.1/main/postgresql.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗ
max_connections = 150 - рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 100 рд╣реИред
shared_buffers = 7GB - <25% рд╕рд┐рд╕реНрдЯрдо рд░реИрдоред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ kernel.shmmax рдХреЛ рдмрдврд╝рд╛рдирд╛ рд╣реЛрдЧрд╛ред
temp_buffers = 512MB - рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд▓рд┐рдо рдореЛрдб рдЙрдкрдпреЛрдЧрд┐рддрд╛ osm2pgsql рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
work_mem = 3GB - "ORDER BY" рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ "рдЬреЙрдЗрди" рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
maintenance_work_mem = 16GB - VACUUM, CREATE INDEX, ALTER TABLE ADD FOREIGN IN рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
random_page_cost = 3.0 - рдпреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ!
effective_cache_size = 42GB - 66% рддрдХ рд░реИрдоред
checkpoint_segments = 50
autovacuum = off

Osm2pgsql рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд╣рдо planet.osm.org рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдбреЗрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВред
PostgreSQL рдиреЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП osm2pgsql рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрд▓рд┐рдо рдореЛрдб рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдЖрдкрдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рд░реИрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЛ рдареАрдХ рдХрд░ рд▓реЗрдВрдЧреЗ, рдЬреЛ рдЙрдмрдВрдЯреВ рдореЗрдВ /usr/local/share/osm2pgsql/default.style рдореЗрдВ рд╣реИ ред рдЧреИрд░-рд▓реИрдЯрд┐рди рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддреАрди рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗ: int_name (рдореВрд▓), рдирд╛рдо: en (рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдореЗрдВ рдирд╛рдо), is_in: рджреЗрд╢ (рджреЗрд╢)ред
рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрдЬреНрдЮрд╛:
 time sudo -u postgres osm2pgsql -r pbf -sc -d gis -C 40000 --number-processes 24 --cache-strategy dense --unlogged planet-latest.osm.pbf 

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛:
-r pbf - pbf рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
-sc - рдирдП рдЯреЗрдмрд▓ ( рд╕реА ) рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╕реНрд▓рд┐рдо рдореЛрдб ( рдПрд╕ ), рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
--number-processes 24 - рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕реАрдкреАрдпреВ-рдПрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ;
--unlogged - рд▓реЗрди-рджреЗрди рд▓реЙрдЧ рди рдХрд░реЗрдВред
рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ 28 рдШрдВрдЯреЗ рд▓рдЧреЗред

рдЯрд╛рдЗрд▓рдорд┐рд▓ рдореЗрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╢реИрд▓реА рдмрдирд╛рдПрдВ

рдЧреИрд░-рд▓реИрдЯрд┐рди рдирд╛рдореЛрдВ рдХреА рддреИрдпрд╛рд░реА

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рджреЗрд╢реЛрдВ рдХреЛ PostgreSQL рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрдИ рдЕрдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реИрдЯрд┐рди рдореЗрдВ рдирд╣реАрдВ (рдореВрд▓ рдХреЗ рдмрд╛рдж, рд▓реИрдЯрд┐рди рдореЗрдВ рдХреЛрд╖реНрдардХ рдореЗрдВ рдирд╛рдо рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ) рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, planet_osm_point рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЧреИрд░-рдкреНрд▓реЗрдЯрд┐рдирдо рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдБ:
 ALTER TABLE planet_osm_point ADD COLUMN nonlatin boolean; UPDATE planet_osm_point SET nonlatin='1' WHERE name similar to '%[^\x20-\x7e]+%'; 


рд╢реИрд▓реА рдХрд╛ рд╕рдВрдкрд╛рджрди

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЯрд╛рдЗрд▓рдорд┐рд▓ рдХреЗ рд▓рд┐рдП рдУрдПрд╕рдПрдо рдмреНрд░рд╛рдЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЯрд╛рдЗрд▓рдорд┐рд▓ рддреАрди рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдлрд╛рдЗрд▓реЗрдВ, SQLite, PostGISред CartoCSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдк рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк CSS рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╣реБрдд рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдореЗрдВ рдкрд╛рдПрдВрдЧреЗред
рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, OSM рдмреНрд░рд╛рдЗрдЯ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдХреБрдЫ рдлрд┐рд▓реНрдЯрд░ (PostGIS PostgreSQL рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА) рдХрд╛рдлреА рднрд╛рд░реА рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд▓реИрдЯрд┐рди рдФрд░ рдЧреИрд░-рд▓реИрдЯрд┐рди рдирд╛рдореЛрдВ рдХрд╛ рдЪрдпрди:
 SELECT .., CASE WHEN nonlatin=true AND "name:en" IS NOT NULL THEN CONCAT("name:en",' (',name,')') ELSE name END as en_name ... 


рдПрдордмреАрдЯрд╛рдЗрд▓реНрд╕ рдЬреЗрдирд░реЗрд╢рди

рдЯрд╛рдЗрд▓рдорд┐рд▓ рдореЗрдВ, рдирд┐рд░реНрдпрд╛рдд / рдПрдордмреАрдЯрд╛рдЗрд▓реНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, рдЬрд╝реВрдо (рдорд╛рдирдЪрд┐рддреНрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг), рдХреЗрдВрджреНрд░ рдФрд░ рд╕реАрдорд╛ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВред
рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреА рд╕реАрдорд╛рдПрдБ: -180.0, -85, 180.0, 85
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд╝реЛрдореНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдк рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред

рдЬрд╝реВрдорд╛ 15, 16, 17 рдиреЗ рдЧрддрд┐рд╢реАрд▓ рдкреАрдврд╝реА рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЪреАрдЬреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╡реНрдпрдХреНрддрд┐рдЧрдд MBTiles рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди

рд╡реНрдпрдХреНрддрд┐рдЧрдд MBTiles рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 echo '.dump' | sqlite3 file1.mbtiles | sqlite3 file2.mbtiles 

рдкрд░рд┐рдгрд╛рдо file2.mbtiles рдореЗрдВ рд╣реЛрдЧрд╛ред

рдХреЗ рдЙрдкрдпреЛрдЧ

MBTiles рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ

MBTiles рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Node.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 nohup node /usr/share/tileserver/mbtiles-server/server.js /media/data/mbtiles/filename.mbtiles PORTNUMBER & 

рдЬрд╣рд╛рдВ PORTNUMBER рдкреЛрд░реНрдЯ рдирдВрдмрд░ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдирдХреНрд╢реЗ рдХреА рдЯрд╛рдЗрд▓реЗрдВ (рдЯрд╛рдЗрд▓реЗрдВ) рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреАред

NGINX рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓

рдорд╛рдирдЪрд┐рддреНрд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓:
 server { listen 80; server_name your_server_map_tiles_name.com; #dinamically generation location ^~ /15/ { rewrite ^/15/(.*)$ http://localhost:20008/tile/projectName/15/$1 last; } ... #using MBTiles via runned port location / { proxy_pass http://localhost:PORTNUMBER; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 

рдЗрд╕ рддрд░рд╣, рдЖрдкрдХрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдЯрд╛рдЗрд▓ рдЖрдкрдХреЗ_рд╕рд░реНрд╡рд░_рдореИрдк_рдЯрд╛рдЗрд▓реНрд╕_рдирд╛рдо . com / zoom / x / y.png рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рдЗрдЪреНрдЫрд╛рдПрдБ


рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SSD рдкрд░ MBTiles рдлрд╝рд╛рдЗрд▓ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЖрдИрдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП 512x512 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдЖрдХрд╛рд░ рд╡рд╛рд▓реА рдЧреИрд░-рдорд╛рдирдХ рд░реЗрдЯрд┐рдирд╛ рдЯрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбрд╛рдпрдирд╛рдорд┐рдХ рдЬрдирд░реЗрд╢рди (рдЬрд╝реВрдо 15-17) рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: tourstart.org/drive
рдпрд╛ iPhone рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: itunes.apple.com/app/tourstart/id586049610?mt=8

рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЦ


habrahabr.ru/post/144675
switch2osm.org/serving-tiles/manually-building-a-tile-server-12-04
wiki.openstreetmap.org/wiki/Osm2pgsql
github.com/mapbox/mbtiles-spec
www.mapbox.com/tilemill/docs/linux-install
www.mapbox.com/tilemill/docs/guides/osm-bright-mac-quickstart
www.mapbox.com/carto/api/2.1.0

рдорд╛рдлрд╝ рдХреАрдЬрд┐рдПред OpenStreetMap рд╣рдм рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрд░реНрдо рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

Source: https://habr.com/ru/post/In203212/


All Articles