OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2009-01-05 20:57:12

AndrewKo
Member
Registered: 2009-01-05
Posts: 11

Нарезка Планеты

Доброго времени суток!

Исходная задача - нарезка planet.osm  на страны.
Столкнулся с небольшой проблемой (это всё от лени) ...
Использую osmosis + полигоны из DCW.
Всё прекрасно работало до тех пор пока не добрался до России.
В DCW Россия представлена:

Projection information for Russia

    Projection    LAMBERT
    Units    METERS
    Spheroid    CLARKE1866
    Parameters
     1st standard parallel    70   0   0.000
     2nd standard parallel    50   0   0.000
     central meridian    110   0   0.00
     latitude of projection's origin    0   0   0.000
     false easting (meters)    0.00000
     false northing (meters)    0.00000


Хоть osmosis и продвинутый инструментарий но не до такой степени - отказывается что-либо резать с таким форматом.

В принципе можно набросать скрипт для перевода координат в нужный формат но наверняка кто-нибудь тут сталкивался с такой проблемой.
Если не тяжело или киньте в меня скриптом или поделитесь полигоном для osmosis.

Заранее благодарен!

Offline

#2 2009-01-09 05:18:04

sim
Member
Registered: 2008-04-19
Posts: 629
Website

Re: Нарезка Планеты

разумеется, если у вас данные в этой проекции чтобы резать нужно перевести данные в latlong
я написал генератор poly-файлов по шейпам, но боюсь вам не подойдет, он для Arcview
http://gis-lab.info/qa/osm2shape.html

но если скажете что именно нужно, наверное смогу для вас извлечь.

Offline

#3 2009-01-09 11:41:00

AndrewKo
Member
Registered: 2009-01-05
Posts: 11

Re: Нарезка Планеты

Для Arcview точно не подойдёт...

Я режу планету на куски для последующей конвертации.
Нарезка при помощи программы osmosis.
До сих пор резал или другие страны с использованием файлов DCW или куски России прямоугольниками.
Теперь стоит задача сделать Россию целиком. для этого нужна полилиния вокруг России.
Но для России файлы DCW в формате указанном мной выше.

Т.е. мне нужен файл DCW с координатами узлов полилинии широта-долгота или любой другой файл в котором есть аналогичные координаты и я уже сам преобразую его в формат DCW.

Offline

#4 2009-01-09 13:17:58

wildMan
Member
From: Minsk
Registered: 2008-03-05
Posts: 509

Re: Нарезка Планеты

http://www.evl.uic.edu/pape/data/WDB/
скрипт для конвертации в осм:

#!/usr/bin/python

import sys
import re

filename = sys.argv[1]
type = sys.argv[2]
print "process [%s]" % filename

tags = {
    'cil': {'natural':'coastline'},
    'bdy': {'boundary':'administrative','admin_level':'8'},
    'riv': {'waterway':'river'},
    }[type]

reSeg = re.compile( 'segment +([0-9]+) +rank +([0-9]+) +points +([0-9]+)' )
reCrd = re.compile( '[ \t]*([0-9]+\.[0-9]+)[ \t]+([0-9]+\.[0-9]+)' )

file = open(filename)
out = open("%s.osm" % filename, 'w')
line = 0
id = {'cil':-1000000, 'bdy':-2000000, 'riv':-3000000}[type]
ids = []
out.write( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" )
out.write( "<osm version=\"0.5\" generator=\"wdb2osm.py\">\n" )

while True:
    src = file.readline()
    if src == '':
        break
    src = src.strip()
    matchResult = reSeg.match( src )
    if matchResult:
        print "new seg [%s]" % src
        if ids:
            id -= 1
            out.write( "<way id=\"%d\" user=\"\" timestamp=\"\">\n" % ( id ) )
            for ref in ids:
                out.write( "<nd ref=\"%d\" />\n" % ( ref ) )
            for k in tags.keys():
                out.write( "<tag k=\"%s\" v=\"%s\" />\n" % ( k, tags[k] ) )
            out.write( "</way>\n" )
        ids = []
    else:
        matchResult = reCrd.match( src )
        if matchResult:
            id -= 1
            ids.append( id )
            lat = float( matchResult.group(1) )
            lon = float( matchResult.group(2) )
            out.write( "<node id=\"%d\" lat=\"%f\" lon=\"%f\" user=\"\" timestamp=\"\" />\n" % ( id, lat, lon ) )
    line += 1

out.write( "</osm>\n" )

использование:
wdb2osm file cil
wdb2osm file bdi
wdb2osm file riv


--
OSMF BY Team

Offline

#5 2009-01-10 06:06:16

sim
Member
Registered: 2008-04-19
Posts: 629
Website

Re: Нарезка Планеты

вот граница России в poly так как использую ее я, включены все острова и анклавы + 20 км буфер вдоль границы
http://gis-lab.info/projects/osmrus/dat … uf20-xp.7z

Offline

#6 2009-01-10 10:37:09

AndrewKo
Member
Registered: 2009-01-05
Posts: 11

Re: Нарезка Планеты

Спасибо, большое!
Похоже это именно то что я искал.
Буду пробовать.

Offline

Board footer

Powered by FluxBB