Search notes:

OpenStreetMap

OpenStreetMap is a database of geographic data.
Generally, anything that is visible can be added to this database. A universally accepted exception of unobservable «things» in the database are boundaries of political territories.
The database does not contain any private data.

Coordinates

Viewing specific coordinates on the Open Street Map: http://www.openstreetmap.org/?mlat=-30&mlon=-60&zoom=4
Apparently, the southern hemisphere has negative latitude, the hemisphere west of grenwich has negative longitude.

Precision

OSM stores a coordinate in a 32 bit integer with a precision of 7 digits after the decimal point. Thus, a latitude/longitude coordinate pair requires 64-bit.
With this precision, a point can be identified with an accuracy of at least 1 cm.

Quad tiles

The current «official» OSM data stores the 64 bits required for longitude and lattitude along with 64-bits (column tile) which identify the coordinate's quad tile.
The tile column is indexed with a B-tree.

Anti-Meridian considerations

A way that connects 179° E with 179° Way goes which way exactly? Does it cross the anti-meridian or does it take the longer way around the entire wordl?

Perl and other scripts

GPX Planet Tools for processing planet.gpx.
Perl scripts on OSM's wiki.
Perl modules Geo::Coder::OSM, Geo::OSM::DBI

Showing ids on a map

http://www.openstreetmap.org/way/10665159
http://www.openstreetmap.org/node/10665159
http://www.openstreetmap.org/relation/172224

Overpass API

The Overpass API is a query API for Openstreet Data. It is designed for queries of objects that are spatially close from one to another.
The Overpass API was referred to as OSM Server Side Scripting (OSM3S) before 2011.

Overpass turbo

Overpass turbo allows to runs an Overpass API query and have it show the results on an interactive map.
Some URLs where Overpass turbo queries can be executed include:
Find everything with the name Freienstein. nwr is an abbreviation for nodes, ways and relations.
nwr[name="Freienstein"];
out center;
Searching with regular expressions: find objects whose name have an x followed directly or indirectly by an y:
nwr[name~"x.*y"]({{bbox}});
out;
node(s, w, n, e) selects all nodes in a (bounding) box that is delimited by the south, west, north and east coordinates s, w, n and e.
This query shows the nodes of Bishop Rock, according to the Guineess Book of Records the smallest island with a building on it:
node (
   49.8727, -6.4458, // minimum latitude and longitude (South and West border)
   49.8730, -6.4452  // maximum latitude and longitude (North and East border)
);
out;
Compare node(…) with [bbox:…].
(around:n) is another spatial filter: it searches within n meters of the currently found/selected objects. The following query searches for supermarktes that are within 100 meters of public transport stations:
nwr[public_transport = station    ]({{bbox}}  );
nwr[shop             = supermarket](around:100);
out center;
[out:json][timeout:25];
{{geocodeArea:Zürich}}->.searchArea;
// gather results
(
  nwr["amenity"="fountain"](area.searchArea);
);
out center;

UNION

Parenthesis combine the results of two «queries». The following query selects anything that has either Freienstein or Ofenloch in its name:
(
 nwr[name="Freienstein"];
 nwr[name="Ofenloch"   ];
);
out center;
I believe this parantheses are technically called a block statement.

Searching in a supplied bounding box

({{bbox}}) is a spatial filter that searches in the supplied bounding box.
The following query searches for parking lots in the selected region:
[bbox:{{bbox}}];
(
   node[amenity=parking]({{bbox}});
   way [amenity=parking]({{bbox}});
);
out geom;

Comments

Portions of a query can be commented with the usual /* … */ and // symbols.

out statements

out The complete geodata.
out ids; The ids of the objects.
out skel; Add the information necessary to reconstruct the objects.
out meta; Add objects' version and timestamp
out … bb; Add a bounding box for each way and relation.
out … center; Amends ways and relations with geometries, requires at least out meta.
out tags;

Automated edits

Unfortunately, the «OSM community» maintains a dogma which prevents them from executing so-called «automated edits» (aka mechanical edits). The Automated Edits code of conduct specifically prohibits:
Modifications that were executed in compliance with the code of conduct are listed in Automated edits log.
Mateusz Konieczny (reasonably, imho) maintains that automatic edits are OK if edits if
See also

Tools

osmium-surplus

osmium-surplus contains some commands to detect problems and anomalies in OSM data:
osp-find-colocated-nodes
osp-find-orphans Find untagged, unconnected «orphan» nodes.
osp-find-unusual-tags
osp-find-way-problems
osp-find-relation-problems
osp-find-multipolygon-problems

OSM Conflator

OSM Conflator is a python script to merge (aka confluate) a third-party dataset with coordinates and OpenStreetMap data.
This script was inspired by Osmsync.
This webpage takes a JSON output from OSM Conflate and presents logged-in users an interface for validating each affected OSM element, one-by-one

Hootenanny

Another confluation tool is Hootenanny.

TODO

uMap allows to create maps (and embed them in a webpage).

Changesets

Changesets need not be monotonously increasing in respect to a a node's history.
Additionally, It's also possible for different versions to have the same changeset.
See for example the history of node 580485 (changeset of version 1 is 132228, of version 2 is 79005; changeset 854251 contributes to the nodes versions 6, 7 and 8).

Quality Assurance (QA)

osmose-backend

There is also a frontend for the results whose github repository is osm-fr/osmose-frontend.
An interesing file in this repository is tools/database/items_menu.txt: it seems to store «names» for various possible QA probles, such as incompatible tags, unwanted tag on node etc.

See also

Nodes, ways, relations and tags.
An SQLite database schema for OSM data.
Perl module Net::Curl::Multi
Open Street Map - Switzerland
Scripts for managing OpenStreetMap pbfs
Nominatim
OpenStreetMap API
R packages OpenStreetMap (which is not affiliated with the OpenStreetMap project) and osmdata.
Mapnik is the library with which OSM maps are typically rendered.
geodata

Links

OpenStreetMap Repositories on github
The hacker's guide to OpenStreetmap with a link to the canonical map server toolchain which gives an overview of how geospatial information from OpenStreetmap is turned into map tiles for online viewing.
staticMapLite: simple maps for the website.
The Perl module Geo::OSM::Tiles can be used to calculate the url of an image »tile«.
OSM data extracts (PBFs)
planet.gpx is an enormous CSV file, dated 2013, that contains all point coordinates as of that date.
OSM history viewer
OpenGeofiction is a map of an imagery world, built using OpenStreetMap technology.
Wikidata property P402
My OSM experiment
An experiment that tries to load the OpenStreetMap database into SQLite.
OpenHistoricMap also has a time dimension and tries to show how the earth used to look like.jkjkj

Index