FreeGD рдкрд░ PostGIS + Mapnik + TileCache

рдирдорд╕реНрддреЗ! рд╣рдорд╛рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ "openstreetmap.org" рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдорд╣рд╛рди рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА" рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрд░ рджреЛ рджрд┐рди рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рдХреНрдпрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдкрдХрд░рдг рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:


рд╕реНрдерд╛рдкрдирд╛

1. PostGIS рд▓рдЧрд╛рдПрдВ
рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреН /usr/ports/databases/postgis
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, /usr/local/share/postgis/contrib/postgis-1.5 рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ psgl рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ postgis.sql рдФрд░ spatial_ref_sys.sql рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
2. рдореЗрдкрдирд┐рдХ рд░рдЦреЛ
рдпрд╣ рдЦреБрдж рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рднреА рд╣реИ: /usr/ports/graphics/mapnik
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ:
svn.openstreetmap.org/applications/rendering/mapnik (рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЙрдиреНрд╣реЗрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
3. рд╣рдордиреЗ рдЯрд╛рдЗрд▓рдХреИрдЪ рд▓рдЧрд╛рдпрд╛
рдЯрд╛рдЗрд▓рдЪреЗ рдХреЗ рд╕рд╛рде рдпрд╣ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ - рдпрд╣рд╛рдБ рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ tilecache.org/tilecache-2.11.tar.gz ред
рд╕рдорд╛рдпреЛрдЬрди

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЯреНрдпреВрдирд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдордЬреЗрджрд╛рд░ рд╣реИ!
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд┐рддреНрд░ рдореЗрдВ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЫрд╡рд┐

So. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдУрд╕рдо рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, openstreetmap.org рд╕реЗ рд╕реАрдзреЗ рдирд┐рд░реНрдпрд╛рдд (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ) рдпрд╛
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: gis-lab.info/projects/osm_dump
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдм PostGIS рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдХрдорд╛рдВрдб
osm2pgsql -U user RU-SPE.osm
рдЬрд╣рд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЙрдЧрд┐рди рд╣реИ, рдФрд░ RU-SPE.osm рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдХреНрд╢рд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛ рд╣реИред
рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

osm2pgsql SVN version 0.80.0 (32bit id space)

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
Setting up table: planet_osm_line
Setting up table: planet_osm_polygon
Setting up table: planet_osm_roads
Mid: Ram, scale=100

Reading in file: RU-SPE.osm
Processing: Node(1767k 176.7k/s) Way(264k 18.88k/s) Relation(7314 1828.50/s) parse time: 28s

Node stats: total(1767355), max(1633105798) in 10s
Way stats: total(264350), max(150391691) in 14s
Relation stats: total(7314), max(2024096) in 4s

Writing way (264k)

Writing relation (7314)
Committing transaction for planet_osm_point
Sorting data and creating indexes for planet_osm_point
Committing transaction for planet_osm_roads
Sorting data and creating indexes for planet_osm_roads
Committing transaction for planet_osm_line
Sorting data and creating indexes for planet_osm_line
Committing transaction for planet_osm_polygon
Sorting data and creating indexes for planet_osm_polygon
Indexes on planet_osm_roads created in 0s
Completed planet_osm_roads
Indexes on planet_osm_point created in 3s
Completed planet_osm_point
Indexes on planet_osm_line created in 4s
Completed planet_osm_line
Indexes on planet_osm_polygon created in 6s
Completed planet_osm_polygon

Osm2pgsql took 48s overall


рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЪрд▓реЛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рдЕрдм рд╣рдореЗрдВ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдФрд░ рд╕рдореБрджреНрд░ рддрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рд╕рд┐рд░реНрдл рд╕рд╛рджрд╛ рд╣реЛрдЧрд╛ред
рд╕рдм рдХреБрдЫ рдПрдХ рдЬрдЧрд╣ рдФрд░ рдХреНрд░рдо рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ / рдореЗрдкрдирд┐рдХ / рдмрдирд╛рдПрдВред
рдЕрдм рд╣рдо рд╡рд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЛ рд╡рд╣рд╛рдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

wget tile.openstreetmap.org/world_boundaries-spherical.tgz
tar xvzf world_boundaries-spherical.tgz
wget tile.openstreetmap.org/processed_p.tar.bz2
tar xvjf processed_p.tar.bz2 -C world_boundaries
wget tile.openstreetmap.org/shoreline_300.tar.bz2
tar xjf shoreline_300.tar.bz2 -C world_boundaries
wget www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/110m-admin-0-boundary-lines.zip
unzip 110m-admin-0-boundary-lines.zip -d world_boundaries
wget www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/10m-populated-places.zip
unzip 10m-populated-places.zip -d world_boundaries


рдКрдкрд░, рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдХрд┐ svn.openstreetmap.org/applications/rendering/mapnik рд╕реЗ рд╣рдореЗрдВ рдХреМрди рд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рддреЛ, рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
generate_xml.py (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдпрд╛рдд mapnik рдХреЛ mapnik2 рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд mapnik2 рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛)
osm.xml
рдФрд░ рдлрд╝реЛрд▓реНрдбрд░
inc /
рдкреНрд░рддреАрдХ /

рдЖрдкрдХреЛ osm.xml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: github.com/mapnik/mapnik/tree/master/utils/upgrad_map_xml
рдФрд░ рдЖрдк osm.xml рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣рд╛рдБ рд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ: pastebin.com/bMsXytcc
рдЕрдм рд╣рдо map.xml рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ:

./generate_xml.py osm.xml --host localhost --user user --dbname gis --symbols symbols/ --world_boundaries world_boundaries/ --port 5432 --epsg='900913' --accept-none > map.xml
рдЬрд╣рд╛рдБ --accept-none рдХрд╛ рдорддрд▓рдм рдЧреИрд░-рдкрд╛рд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЦрд╛рд▓реА рдорд╛рди рд▓реЗрдирд╛ рд╣реИред

рд╣рдореЗрдВ рдПрдХ рдХрд╛рдлреА рдмрдбрд╝рд╛ map.xml рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ, рдпрд╣ рдХреЗрд╡рд▓ рдЯрд╛рдЗрд▓рдХреЗрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдХреЛ /usr/local/www/data/tilecache ред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: tilecache.cfg рдФрд░ index.htmlред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЯрд╛рдЗрд▓рдХреИрдЪ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ map.xml рд╕реЗ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрднреА рдмрдирд╛рдпрд╛ рд╣реИ)ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдВ рд╡рд╣реА рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:
[osm-map]
type=MapnikLayer
mapfile=/usr/home/user/mapnik/map.xml
spherical_mercator=true
bbox=-20037508.34,-20037508.34,20037508.34,20037508.34
resolutions=2445.984375,1222.9921875,611.49609375,305.748046875,152.8740234375,76.43701171875,38.218505859375,19.1092529296875,9.55462646484375,4.777314,2.388657,1.1943285,0.59716427,0.298582
metaTile=true
metaSize=8,8
metaBuffer=40
levels=12
extent_type=loose


рдпрд╣рд╛рдБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░:
mapfile=/usr/home/user/mapnik/map.xml рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрде
bbox=-20037508.34,-20037508.34,20037508.34,20037508.34 рдХреНрд╖реЗрддреНрд░ bbox=-20037508.34,-20037508.34,20037508.34,20037508.34 рд╕реАрдорд╛рдПрдБред рдпреЗ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: docs.openlayers.org/library/spherical_mercator.html
рд╕рдВрдХрд▓реНрдк = ... рдпрд╣ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпреЗ рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдЬрд╝реВрдо рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рдВрдХрд▓реНрдк рд╣реИрдВ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рдкрд░, рд╕рдВрдЦреНрдпрд╛ 20037508.34 * 2/256 рджреЛ рдХреА рд╢рдХреНрддрд┐ рджреЗред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдЯрд╛рдЗрд▓ (рдЫреЛрдЯреЗ рд╡рд░реНрдЧ) рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рджреБрдирд┐рдпрд╛ рдХреЗ "рд╡рд░реНрдЧ" рдХрд╛ рдкрдХреНрд╖ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 256 рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИред

рдЕрдиреНрдп рд╕рднреА рдкрд░рддреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╣рдо index.html рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЗрд╕рдореЗрдВ, рдЖрдкрдХреЛ init () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:

function init(){

map = new OpenLayers.Map("map", {
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
numZoomLevels:14,
maxResolution:156543.03125/64,
units:'m',
projection: "EPSG:900913",
displayProjection: new OpenLayers.Projection("EPSG:4326")
});

layer = new OpenLayers.Layer.WMS( "OSM",
"tilecache.cgi?", {layers: 'osm-map', format: 'image/png'} );
map.addLayer(layer);
map.addControl(new OpenLayers.Control.Permalink());
map.addControl(new OpenLayers.Control.PanZoomBar());
map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
map.addControl(new OpenLayers.Control.Permalink());
map.addControl(new OpenLayers.Control.Permalink('permalink'));
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.OverviewMap());
map.addControl(new OpenLayers.Control.KeyboardDefaults());

if (!map.getCenter()) {
var proj = new OpenLayers.Projection("EPSG:4326");
var point = new OpenLayers.LonLat(30, 60);
map.setCenter(point.transform(proj, map.getProjectionObject()),4);
}
}


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34) рд╕реАрдорд╛рдПрдБ рдмрд┐рд▓рдХреБрд▓ рд╡реИрд╕реА рд╣реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реА рдХрд┐ tilbache.cfg рдореЗрдВ рд╣реЛрддреА рд╣реИрдВред
maxResolution:156543.03125/64 2445.984375 рд╣реИ, рдЕрд░реНрдерд╛рдд рдЕрдзрд┐рдХрддрдо рд╕рдВрдХрд▓реНрдкред
map.setCenter(point.transform(proj, map.getProjectionObject()),4); рдирдХреНрд╢реЗ рдХрд╛ рдХреЗрдВрджреНрд░ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╝реВрдо рд╕реЗрдЯ рдХрд░рдирд╛ рддрд╛рдХрд┐ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдХреА рд╕рдордЧреНрд░ рдпреЛрдЬрдирд╛ рджрд┐рдЦрд╛рдИ рджреЗред
рдЙрдерд▓рд╛ рд╕реНрдкрд░реНрд╢: рдЕрдкрд╛рдЪреЗ рдХреЛ tilecache.cgi рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:
<Directory "/usr/local/www/data/tilecache">
AllowOverride None
Options None
Order allow,deny
Allow from all

рдФрд░ chmod 755 tilecache.cgi


рдЪреЗрдХ

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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░

рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд░реНрд╡рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ PostGIS рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рддреЛ рдореИрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

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


All Articles