рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ OpenStreetMap рдПрдХ рдпреБрд╡рд╛, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ, рдЕрдм рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд░рдЪрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдереЛрдбрд╝реЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд╣ рд╕рдм рдХреБрдЫ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ рдЬреЛ рдЖрддреНрдорд╛ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛ
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдХрд┐ SQL рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 2008 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ, рдЖрдк рдЬреНрдпрд╛рдорд┐рддреАрдп рдФрд░ рднреМрдЧреЛрд▓рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред OpenStreetMap рдПрдХ XML рдкреНрд░рд╛рд░реВрдк рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧрд▓рддрдлрд╣рдореА рдХреЗ рдХрд╛рд░рдг рд╡реЗ рдЗрд╕реЗ OSM рдХрд╣рддреЗ рд╣реИрдВ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рд╢рд╣рд░ рдХреЗ рд╕рднреА рдмреИрдВрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдирд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдвреВрдВрдвреЗрдВ рдФрд░ рдлрд┐рд░ "рдирд┐рд░реНрдпрд╛рдд" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рд╛рд░реВрдк "рдбреЗрдЯрд╛ (OpenStreetMap XML)" рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдФрд░ рд╢рд╛рдпрдж рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрднреА-рдХрднреА, рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдлрд┐рд░
gis-lab.info рд╕рдВрд╕рд╛рдзрди рд╕реЗ рд╕рд╣реЗрдЬреА рдЧрдИ osm рдлрд╝рд╛рдЗрд▓
рдмрдЪрд╛рд╡ рдореЗрдВ рдЖ рд╕рдХрддреА рд╣реИ
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдЪреБрдиреЗрдВ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдУрд╕рдо рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдЕрдм рд╣рдо рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗ, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ SQL Server 2008R2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ xml рдкреНрд░рдХрд╛рд░ рдЪрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ:
DECLARE @x xml;
SET @x = (SELECT * FROM OPENROWSET(
BULK 'C:\tmp\stpeter.osm',
SINGLE_BLOB) AS x);
рдлрд┐рд░ рдиреЛрдбреНрд╕ (рдиреЛрдбреНрд╕) рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг (рдиреЛрдбрд╕реНрдЯреИрдЧ) рдХреЗ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ
рдкрд╣рд▓рд╛, рдкрд╣рд▓рд╛:
IF object_id('nodes') IS NOT NULL
DROP TABLE nodes
CREATE TABLE nodes (
nodeid int,
latitude float,
longitude float,
geog4326 geography
);
INSERT INTO nodes
SELECT
OSMnode.value('@id', 'int') AS nodeid,
OSMnode.value('@lat', 'float') AS latitude,
OSMnode.value('@lon', 'float') AS longitude,
geography::Point(OSMnode.value('@lat', 'float'), OSMnode.value('@lon', 'float'), 4326) AS geog4326
FROM
@x.nodes('/osm/node') AS OSM(OSMnode)
SQL рд╕рд░реНрд╡рд░ рдкреНрд░рдмрдВрдзрди рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдбреЗрдЯрд╛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ) рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯреИрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред XML рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд▓ рддрддреНрд╡ (рдПрд╕) рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
IF object_id('nodetags') IS NOT NULL
DROP TABLE nodetags
CREATE TABLE nodetags (
nodeid int,
tagname varchar(32),
tagvalue varchar(32)
);
INSERT INTO nodetags
SELECT
OSMNode.e.value('(@id)[1]', 'int') AS 'NodeID',
OSMNodeTag.e.value('@k', 'nvarchar(32)') AS 'TagName',
OSMNodeTag.e.value('@v', 'nvarchar(32)') AS 'TagValue'
FROM
@x.nodes('/osm/node') AS OSMNode(e)
CROSS APPLY
OSMNode.e.nodes('tag') AS OSMNodeTag(e)
рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд╕рдм рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ:
SELECT
n.nodeid,
n.geog4326,
nt.TagValue
FROM nodes n
LEFT JOIN nodetags nt ON n.nodeid = nt.nodeid AND TagName in ('Name' ,'operator')
WHERE n.nodeid IN
(
SELECT nodeid from nodetags
where tagvalue like '%%'
)
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрд╕рдПрдордПрд╕ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЕрдВрдХ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

рд╕рд╛рде рд╣реА, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдВрдЧ рдХрд╛рд░реНрдб (рдореИрдВрдиреЗ рдпрд╣ Microsoft рд░рд┐рдкреЛрд░реНрдЯ рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдерд╛)ред

рдореИрдВ рдХреЗрд╡рд▓ gis-lab.info рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рднреА рдЕрдлрд╕реЛрд╕ рд╣реИ рдХрд┐ рдХреАрд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрд▓рдЧ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореИрджрд╛рди рдирд╣реАрдВ рд╣реИред рдкреВрд░реЗ рдпреВрдХреНрд░реЗрди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЗрдХрд╛рдЗрдпрд╛рдБ рдЯреЙрд╕ рдФрд░ рдореЛрдбрд╝ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдХрдард┐рди рд╣реИрдВ ...