OpenStreetMap: Porovnání verzí

Z GeoWikiCZ
m (→‎Odkazy: Vespucci)
 
(Není zobrazeno 36 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
<div style="float: right;">
<div style="float: right;">
[[Image:osm-logo.png|right|Logo OpenStreetMap]]
{{
{{
#display_point:
#display_map:
50.1040 14.3890
50.1040, 14.3890
| width=307
| width=307
| height=200
| height=200
| zoom=14
| zoom=14
| service=openstreetmap
| service=openlayers
}}
}}
</div>
</div>
[[Image:osm-fsv.png|right|thumb|300px|OSM v okolí Stavební fakulty ČVUT [2008/03/11]]]
[[Image:osm-fsv.png|right|thumb|300px|OSM v okolí Stavební fakulty ČVUT [2008/03/11]]]
'''OpenStreetMap''' je projekt, jehož cílem je tvorba volně dostupných geografických dat a následně jejich vizualizace do podoby silniční mapy, uliční mapy měst atd. Pro tvorbu geodat se využívá zejména záznamů z přijímačů GPS, která jsou následně kontrolována a editována. Je založen na kolektivní spolupráci a na koncepci Open source. Data jsou poskytována pod licencí Creative Commons Attribution-ShareAlike 2.0. OpenStreetMap byl inspirován projekty jako je například Wikipedia, umožňuje editaci dat a uchovává kompletní historii provedených změn.
'''OpenStreetMap''' je projekt, jehož cílem je tvorba volně dostupných geografických dat a následně jejich vizualizace do podoby silniční mapy, uliční mapy měst atd. Pro tvorbu geodat se využívá zejména záznamů z přijímačů GPS, která jsou následně kontrolována a editována. Je založen na kolektivní spolupráci a na koncepci Open source. Data jsou poskytována pod licencí Creative Commons Attribution-ShareAlike 2.0. OpenStreetMap byl inspirován projekty jako je například Wikipedia, umožňuje editaci dat a uchovává kompletní historii provedených změn.
Řádek 15: Řádek 15:
Převzato z české [http://cs.wikipedia.org/wiki/Openstreetmap wikipedie].
Převzato z české [http://cs.wikipedia.org/wiki/Openstreetmap wikipedie].
</div>
</div>
''Perlička:'' Město Bagdád na [http://maps.google.cz/maps?f=q&source=s_q&hl=cs&geocode=&q=bagdad&sll=50.453002,13.919096&sspn=0.038582,0.111494&brcurrent=5,0,0&ie=UTF8&hq=&hnear=Bagd%C3%A1d,+Ir%C3%A1k&ll=33.315898,44.392319&spn=0.202551,0.445976&z=12 Google Maps] a [http://www.openstreetmap.org/?lat=33.3406&lon=44.4009&zoom=12&layers=M OSM].


== Výuka ==
== Výuka ==
Řádek 22: Řádek 20:
* [[153YFSG|Free software GIS]]
* [[153YFSG|Free software GIS]]
* [[153UZPD|Úvod do zpracování prostorových dat]]
* [[153UZPD|Úvod do zpracování prostorových dat]]
* [[153PIN2|Projekt - Informatika 2]]


=== Cvičná databáze pgis_osm ===
=== Cvičná databáze pgis_osm ===


Na serveru josef je umístěna databáze '''pgis_osm''' s importovanými OSM daty ČR. Databáze slouží pro výuku je určena pro experimentování.
Na serveru ''geo102'' je umístěna databáze '''pgis_osm''' s importovanými OSM daty ČR. Databáze slouží pro výuku je určena pro experimentování.


<pre>
<pre>
Řádek 114: Řádek 113:
</pre>
</pre>


== Poznámky ==
== Import ==


=== Import dat do [[PostGIS]] ===
=== Import dat do [[PostGIS]] ===
Řádek 122: Řádek 121:
  wget http://download.geofabrik.de/osm/europe/czech_republic.osm.bz2
  wget http://download.geofabrik.de/osm/europe/czech_republic.osm.bz2


Projekce [http://spatialreference.org/ref/sr-org/6627/ Google Mercator] ve standardní distribuci PostGISu chybí - je potřeba aktualizovat tabulku <tt>spatial_ref_sys</tt>.
Projekce [http://spatialreference.org/ref/sr-org/6627/ Google Mercator] ve standardní distribuci PostGISu může chybět, potom je potřeba přidat do tabulky <tt>spatial_ref_sys</tt> příslušný záznam.


<source lang="sql">
<source lang="sql">
Řádek 137: Řádek 136:
</source>
</source>


Pomocí konzolové aplikace [http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/ osm2pgsql] data naimportujeme do existující databáze PostGIS ([http://spatialreference.org/ref/sr-org/6627/ Google Mercator]).
Pomocí konzolové aplikace [http://wiki.openstreetmap.org/wiki/Osm2pgsql osm2pgsql] data naimportujeme do existující databáze PostGIS ([http://spatialreference.org/ref/sr-org/6627/ Google Mercator]).


  osm2pgsql -d pgis_osm -p czech czech_republic.osm.bz2
  osm2pgsql -d pgis_osm -p czech -s czech_republic.osm.bz2


Příklad pro EPSG [http://spatialreference.org/ref/epsg/4326/ 4326] (WGS-84):
Příklad pro EPSG [http://spatialreference.org/ref/epsg/4326/ 4326] (WGS-84):


  osm2pgsql -d pgis_osm -p czech -E 4326 czech_republic.osm.bz2
  osm2pgsql -d pgis_osm -p czech -E 4326 -s czech_republic.osm.bz2
 
Pro import do PostGISu můžete kromě <tt>osm2pgsql</tt> použít také [http://imposm.org Imposm].
 
=== Import dat do [[GRASS GIS]] ===
 
''Poznámka:'' Návod pro GRASS 7
 
Nejprve stáhneme zkomprimovaná data ve formátu ESRI Shapefile, viz [http://download.geofabrik.de/osm/europe/]. Např.
 
mkdir ~/osm
cd ~/osm
wget http://download.geofabrik.de/osm/europe/czech_republic.shp.zip
 
Data jsou referencována v souřadnicovém systému WGS-84 (EPSG:4326), před importem data dekomprimujeme, např.
 
unzip czech_republic.shp.zip
 
Spustíme GRASS
 
grass70
 
Novou GRASS lokaci můžeme vytvořit pomocí {{grassPrikaz|wxGUI}} nástroje ''Location Wizard'' nebo z běžící seance pomocí příkazu {{grassPrikaz|g.proj}}.
 
g.proj location=cr_osm wkt=~/osm/buildings.prj
 
GRASS opustíme a spustíme znovu se zvolenou lokací 'cr_osm'.
 
Archiv obsahuje několik tématických vrstev
 
v.in.ogr -l dsn=~/osm
Data source contains 7 layers:
roads
railways
places
waterways
points
buildings
natural
 
Import dané vrstvy provedeme příkazem {{grassPrikaz|v.in.ogr}}.
 
v.in.ogr dsn=~/osm layer=buildings
 
Import může trvat poměrně dlouho (navíc je náročný na paměť), modul při importu opravuje topologické chyby, které se ve vstupních datech mohou vyskytnout.
 
Příklad [[Python]] skriptu pro import data:
 
<source lang=python>
#!/usr/bin/env python
 
#%module
#% description: Import OSM data provided in ESRI Shapefile format into GRASS
#%end
#%option
#% key: directory
#% description: Name of input directory
#% type: string
#% required: yes
#%end


Při chybě, např.
import sys


Processing: Node(12170k) Way(0k) Relation(0k)Error allocating nodes
import grass.script as grass
Error occurred, cleaning up


může pomoci přepínač <tt>-s</tt>
def main():
    layers = grass.read_command('v.in.ogr',
                                quiet = True,
                                flags = 'l',
                                dsn = options['directory']).splitlines()
    if not layers:
        grass.fatal("No layers available")
   
    for l in layers:
        grass.message("Importing <%s>" % l)
        grass.run_command('v.in.ogr',
                          dsn = options['directory'],
                          layer = l)
    return 0


     -s|--slim            Store temporary data in the database. This greatly
if __name__ == "__main__":
                        reduces the RAM usage but is much slower.
     options, flags = grass.parser()
    sys.exit(main())
</source>


== Odkazy ==
== Odkazy ==
Řádek 164: Řádek 237:
* [http://gpsfreemaps.net Blog o OSM]
* [http://gpsfreemaps.net Blog o OSM]
* [http://svn.openstreetmap.org/misc/pr_material/ Promo materiály]
* [http://svn.openstreetmap.org/misc/pr_material/ Promo materiály]
 
* [http://www.youtube.com/playlist?list=PLCE6296A33CF47955&feature=mh_lolz OpenStreetMap Basics (videos)]
* [http://switch2osm.org/ switch2osm] - Make the switch to OpenStreetMap
* [http://gis.templ.net/GISOVA2011_osm-en_v2.doc Project OpenStreetMap and Open and Free Source of Geodata and Maps]
* [http://gis.templ.net/GISOVA2011_osm-en_v2.doc Project OpenStreetMap and Open and Free Source of Geodata and Maps]
* [http://trac.osgeo.org/mapserver/wiki/RenderingOsmData Rendering OpenStreetMap Data with MapServer]
* [http://trac.osgeo.org/mapserver/wiki/RenderingOsmData Rendering OpenStreetMap Data with MapServer]
Řádek 174: Řádek 248:
* [http://hot.openstreetmap.org/weblog/ Humanitarian OpenStreetMap Team]
* [http://hot.openstreetmap.org/weblog/ Humanitarian OpenStreetMap Team]
* [http://blog.okfn.org/2010/01/15/open-street-map-community-responds-to-haiti-crisis/ Open Street Map community responds to Haiti crisis]
* [http://blog.okfn.org/2010/01/15/open-street-map-community-responds-to-haiti-crisis/ Open Street Map community responds to Haiti crisis]
* Příspěvky z konference [http://www.sotm-eu.org/schedule SotMEU11]
* [http://labs.geofabrik.de/history/ OSM History]
* [http://hdyc.neis-one.org How did you contribute to OpenStreetMap?]
* [http://openrouteservice.org/ http://openrouteservice.org/]
* [http://map.project-osrm.org/ http://map.project-osrm.org/]
* [http://wiki.openstreetmap.org/wiki/Vespucci Vespucci] - online editor for OSM data
{{GFOSS}}
{{GFOSS}}
{{GIS}}
{{GIS}}
{{Kartografie}}
{{Kartografie}}

Aktuální verze z 14. 9. 2012, 10:29

Logo OpenStreetMap
Logo OpenStreetMap

{{

  1. display_map:

50.1040, 14.3890 | width=307 | height=200 | zoom=14 | service=openlayers }}

OSM v okolí Stavební fakulty ČVUT [2008/03/11]

OpenStreetMap je projekt, jehož cílem je tvorba volně dostupných geografických dat a následně jejich vizualizace do podoby silniční mapy, uliční mapy měst atd. Pro tvorbu geodat se využívá zejména záznamů z přijímačů GPS, která jsou následně kontrolována a editována. Je založen na kolektivní spolupráci a na koncepci Open source. Data jsou poskytována pod licencí Creative Commons Attribution-ShareAlike 2.0. OpenStreetMap byl inspirován projekty jako je například Wikipedia, umožňuje editaci dat a uchovává kompletní historii provedených změn.

Převzato z české wikipedie.

Výuka

Cvičná databáze pgis_osm

Na serveru geo102 je umístěna databáze pgis_osm s importovanými OSM daty ČR. Databáze slouží pro výuku je určena pro experimentování.

pgis_osm=> \d
             List of relations
 Schema |       Name       | Type  | Owner 
--------+------------------+-------+-------
 public | czech_line       | table | landa
 public | czech_point      | table | landa
 public | czech_polygon    | table | landa
 public | czech_roads      | table | landa
 public | geometry_columns | table | landa
 public | spatial_ref_sys  | table | landa
(6 rows)

Příklad vytvoření tématické vrstvy 'lesni_porosty' (další příklady).

CREATE TABLE lesni_porosty AS
 SELECT osm_id,name,way FROM czech_polygon WHERE landuse = 'forest';

ALTER TABLE lesni_porosty ADD PRIMARY KEY (osm_id);

SELECT Populate_geometry_columns('lesni_porosty'::regclass);
CREATE INDEX lesni_porosty_gist ON lesni_porosty USING GIST (way);

-- přidělení práv pro QGIS
GRANT SELECT ON lesni_porosty TO postgis;

Příklad přidání sloupce do tabulky.

ALTER TABLE lesni_porosty ADD COLUMN wood text;

UPDATE lesni_porosty SET wood = czech_polygon.wood FROM czech_polygon
 WHERE lesni_porosty.osm_id = czech_polygon.osm_id;

Vzdálená vizualizace v QGIS.

Nastavení spojení k databázi pgis_osm
Vizualizace vrstvy 'lesni_porosty'

Příklad vizualizace dat pomocí UMN MapServer.

MAP
  NAME           "Cvicna databaze OSM"
  STATUS         ON
  IMAGETYPE      PNG
  EXTENT         1347456.13 6198566.23 2099386.47 6630407.12
  SIZE           800 600
  IMAGECOLOR     255 255 255
  UNITS          meters

  WEB
    IMAGEPATH    "/var/tmp/ms_tmp/"
    IMAGEURL     "/tmp/"
  END

  LAYER
    NAME             lesy
    CONNECTIONTYPE   postgis
    CONNECTION       "user=postgis password=XXXXXXXX dbname=pgis_osm host=localhost port=5432"
    DATA             "way FROM czech_polygon"
    FILTER           "landuse = 'forest'"
    STATUS           DEFAULT
    TYPE             POLYGON
    CLASS
      NAME           "Lesy"
      STYLE
        COLOR        89 167 89
        OUTLINECOLOR 32 32 32
      END
    END
  END
END

Import

Import dat do PostGIS

Nejprve stáhneme zkomprimovaná data ve formátu OSM, viz [1]. Např.

wget http://download.geofabrik.de/osm/europe/czech_republic.osm.bz2

Projekce Google Mercator ve standardní distribuci PostGISu může chybět, potom je potřeba přidat do tabulky spatial_ref_sys příslušný záznam.

INSERT INTO spatial_ref_sys VALUES (900913, 'local', 900913,
'PROJCS["Google Mercator",GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",
6378137.0,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0.0,
AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943295],AXIS["Geodetic latitude",NORTH],
AXIS["Geodetic longitude",EAST],AUTHORITY["EPSG","4326"]],
PROJECTION["Mercator_1SP"],PARAMETER["semi_minor",6378137.0],
PARAMETER["latitude_of_origin",0.0],PARAMETER["central_meridian",0.0],PARAMETER["scale_factor",1.0],
PARAMETER["false_easting",0.0],PARAMETER["false_northing",0.0],UNIT["m",1.0],AXIS["Easting",EAST],
AXIS["Northing",NORTH],AUTHORITY["EPSG","900913"]]',
'+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs');

Pomocí konzolové aplikace osm2pgsql data naimportujeme do existující databáze PostGIS (Google Mercator).

osm2pgsql -d pgis_osm -p czech -s czech_republic.osm.bz2

Příklad pro EPSG 4326 (WGS-84):

osm2pgsql -d pgis_osm -p czech -E 4326 -s czech_republic.osm.bz2

Pro import do PostGISu můžete kromě osm2pgsql použít také Imposm.

Import dat do GRASS GIS

Poznámka: Návod pro GRASS 7

Nejprve stáhneme zkomprimovaná data ve formátu ESRI Shapefile, viz [2]. Např.

mkdir ~/osm
cd ~/osm
wget http://download.geofabrik.de/osm/europe/czech_republic.shp.zip

Data jsou referencována v souřadnicovém systému WGS-84 (EPSG:4326), před importem data dekomprimujeme, např.

unzip czech_republic.shp.zip

Spustíme GRASS

grass70

Novou GRASS lokaci můžeme vytvořit pomocí wxGUI nástroje Location Wizard nebo z běžící seance pomocí příkazu g.proj.

g.proj location=cr_osm wkt=~/osm/buildings.prj

GRASS opustíme a spustíme znovu se zvolenou lokací 'cr_osm'.

Archiv obsahuje několik tématických vrstev

v.in.ogr -l dsn=~/osm

Data source contains 7 layers:
roads
railways
places
waterways
points
buildings
natural

Import dané vrstvy provedeme příkazem v.in.ogr.

v.in.ogr dsn=~/osm layer=buildings

Import může trvat poměrně dlouho (navíc je náročný na paměť), modul při importu opravuje topologické chyby, které se ve vstupních datech mohou vyskytnout.

Příklad Python skriptu pro import data:

#!/usr/bin/env python

#%module
#% description: Import OSM data provided in ESRI Shapefile format into GRASS
#%end
#%option
#% key: directory
#% description: Name of input directory
#% type: string
#% required: yes
#%end

import sys

import grass.script as grass

def main():
    layers = grass.read_command('v.in.ogr',
                                quiet = True,
                                flags = 'l',
                                dsn = options['directory']).splitlines()
    if not layers:
        grass.fatal("No layers available")
    
    for l in layers:
        grass.message("Importing <%s>" % l)
        grass.run_command('v.in.ogr',
                          dsn = options['directory'],
                          layer = l)
    return 0

if __name__ == "__main__":
    options, flags = grass.parser()
    sys.exit(main())

Odkazy