전 세계 도시의 위도 및 경도 값에 대한 포괄적 인 목록을 찾고 있습니까?


21

각 경도 및 위도 값을 사용하여 도시 간의 거리를 계산하는 응용 프로그램을 개발 중입니다.

그러나 문제는이 도시들의 위도 및 경도 값에 대한 포괄적 인 목록을 얻을 수있는 곳입니다.


3
시작을 위해 developers.google.com/mapswiki.openstreetmap.org/wiki/API 를 둘러보고 싶습니다

WolframAlpha.com에 대한 좋은 쿼리처럼 들립니다.

답변:



25

지오 네임 데이터 셋을 잊지 마십시오 :

GeoNames 지리 데이터베이스는 모든 국가를 포괄하며 무료로 다운로드 할 수있는 8 백만 개 이상의 장소 이름을 포함합니다.


9
download.geonames.org/export/dump에서 "도시"파일 다운로드
Mike T

그러나 캔의 사람이, 내 말 얼마나 geoname에서 미국 도시 지점 데이터를 정확하게 알http://download.geonames.org/export/dump/
SIslam

1
6 년 후 ... 무료 버전에는 7300 개의 도시가 있고 유료 버전에는 390 만 개의 도시가 있습니다. simplemaps.com/data/world-cities
Synesso

6

자연 지구의 인구가 많은 장소 는 다른 옵션이 될 수 있습니다.


도와 주셔서 감사합니다. 하지만 전 세계 도시의 위도와 경도를 찾고있었습니다.
hello

2
@ dotman14 : 데이터 세트는로 구성됩니다 all admin-0 and many admin-1 capitals, major cities and towns, plus a sampling of smaller towns in sparsely inhabited regions. 그리고 latlon 값은 DBF파일 내부에서 두 개의 열로 찾을 수 있습니다 .
radek

또한 CSV로 변환하는이 온라인 DBF 변환기는 dbfconv.com 을 작동하는 것으로 보이지만 업로드 파일 크기 제한은 데이터베이스의 "단순"버전 만 변환기로 허용합니다.
Nakilon

또 다른 메모는 POP_MAX,POP_MIN,POP_OTHER = "158000","113700","107890"내 도시에 대한 것인데, 그것은 실제로 소련 시대에 최대 173000이었습니다.
Nakilon

3

OpenStreetMap (예 : 여기에 설명 된대로 API 사용 ) 또는 Wikipedia 에서 데이터를 추출 할 수도 있습니다 . 도시에 대한 대부분의 위키 백과 페이지에는 도시의 좌표가 있습니다.

물론 이것은 약간의 스크립팅과 원하는 도시 목록이 필요합니다.


3

OpenStreetMap, 인터넷 액세스, wget 도구 및 다음과 같은 XPath 필터를 사용하십시오. XML :: XPath . 요청은 2x2 정도의 BBox에서 청크되어야합니다. 다음은 서쪽으로 12도, 동쪽으로 14도, 남쪽으로 52도, 북쪽으로 54 도입니다. 베를린은 .. 많은 정보를 가지고 있습니다. 더 작은 단위의 경우 place = town을 사용하십시오. 들어오는 형식은 XML입니다.

  wget -O osm-city-12-52-14-54.xml  "http://open.mapquestapi.com/xapi/api/0.6/node[place=city][bbox=12,52,14,54]"

  wget -O osm-town-12-52-14-54.xml  "http://open.mapquestapi.com/xapi/api/0.6/node[place=town][bbox=12,52,14,54]"
<?xml version='1.0' encoding='UTF-8'?>
<osm version="0.6" generator="Osmosis SNAPSHOT-r26564">
  <node id="21484051" version="7" timestamp="2010-07-13T20:11:08Z" uid="15720" user="J budissin" changeset="5211741" lat="52.2994511" lon="13.6244389">
    <tag k="openGeoDB:auto_update" v="population,is_in"/>
    <tag k="openGeoDB:loc_id" v="19549"/>
    <tag k="openGeoDB:is_in_loc_id" v="294"/>
    <tag k="openGeoDB:name" v="Königs Wusterhausen"/>
    <tag k="openGeoDB:is_in" v="Dahme-Spreewald,Brandenburg,Bundesrepublik Deutschland,Europe"/>
    <tag k="openGeoDB:layer" v="6"/>
    <tag k="openGeoDB:version" v="0.2.6.11 / 2007-12-04 / http://fa-technik.adfc.de/code/opengeodb/dump/"/>
    <tag k="openGeoDB:telephone_area_code" v="03375"/>
    <tag k="openGeoDB:population" v="32785"/>
    <tag k="is_in" v="Dahme-Spreewald,Brandenburg,Bundesrepublik Deutschland,Europe"/>
    <tag k="openGeoDB:community_identification_number" v="12061260"/>
    <tag k="openGeoDB:license_plate_code" v="LDS"/>
    <tag k="openGeoDB:sort_name" v="KOENIGS WUSTERHAUSEN"/>
    <tag k="openGeoDB:type" v="Stadt"/>
    <tag k="openGeoDB:postal_codes" v="15711,15831"/>
    <tag k="name:hsb" v="Parsk (Königs Wusterhausen)"/>
    <tag k="name" v="Königs Wusterhausen"/>
    <tag k="opengeodb:lat" v="52.296999"/>
    <tag k="opengeodb:lon" v="13.6297229"/>
    <tag k="place" v="town"/>
    <tag k="population" v="33370"/>
  </node>
 ...

간단한 펄 수확기 스크립트 :

#!/usr/bin/perl -w 
# --------------------------------------------------------
# Simple OSM Harvester 
# --------------------------------------------------------
use strict;
use XML::XPath;
use XML::XPath::XMLParser;

# Use UFT 8
binmode(STDOUT, ":utf8");
# --------------------------------------------------------
# Parameter @todo put params into commandline arguments
# --------------------------------------------------------
    # while ($cmd = shift) {
    #  $level = shift if $cmd =~ /level/;
    #  $east  = shift if $cmd =~ /east/;
    #  ....
    # }
# --------------------------------------------------------
my $level="town";
my $east=14;
my $west=12;
my $north=54;
my $south=52;

# --------------------------------------------------------
# OS Call wget
# --------------------------------------------------------
my @call =`wget -O osm-town-$west-$south-$east-$north.xml "http://open.mapquestapi.com/xapi/api/0.6/node[place=$level][bbox=$west,$south,$east,$north]"`;    

# --------------------------------------------------------
# Parse the stuff
# --------------------------------------------------------
my $xp = XML::XPath->new(filename => "osm-town-$west-$south-$east-$north.xml");
my $nodes = $xp->find('/osm/node'); # find all paragraphs
for my $node ($nodes->get_nodelist) {
    # print $n, "\n";
    my $lat = $xp->find('./@lat', $node);
    my $lon = $xp->find('./@lon', $node);
    my $name = $xp->find('./tag[@k=\'name\']/@v', $node);
    my $pop  = $xp->find('./tag[@k=\'population\']/@v', $node);
    print "name=$name\tlogitude=$lon\tlatitude=$lat\tpopulation=$pop\n";
}

# --------------------------------------------------------
# EOF
# --------------------------------------------------------

생성 된 출력 (죄송한 독일 LANG wget)

./osm.pl
Warnung: Joker-Zeichen werden bei HTTP nicht unterstützt.
--2014-02-04 01:13:23--  http://open.mapquestapi.com/xapi/api/0.6/node[place=town][bbox=12,52,14,54]
Auflösen des Hostnamen »open.mapquestapi.com (open.mapquestapi.com)«... 205.188.201.176
Verbindungsaufbau zu open.mapquestapi.com (open.mapquestapi.com)|205.188.201.176|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/xml]
In »»osm-town-12-52-14-54.xml«« speichern.

    [   <=>                                                                                                                                                                                  ] 128.148      242K/s   in 0,5s    

2014-02-04 01:13:30 (242 KB/s) - »»osm-town-12-52-14-54.xml«« gespeichert [128148]

name=Königs Wusterhausen    logitude=13.6244389 latitude=52.2994511 population=q33370
name=Teterow    logitude=12.5753569 latitude=53.7709505 population=9647
name=Neukalen   logitude=12.7905515 latitude=53.822817  population=2304
name=Premnitz   logitude=12.3384178 latitude=52.5310487 population=9671
name=Havelberg  logitude=12.0733335 latitude=52.8234367 population=7400
name=Teltow logitude=13.2644532 latitude=52.4016457 population=19541



0

당신은 절대적으로 무료 지오 네임에서 하나를 시도 할 수 있습니다 ..

인터넷에는 www.worldcitiesdatabase.com 또는 geodatasource.com과 같은 많은 유료 데이터베이스 도 있습니다.

오픈 스트리트 데이터를 사용할 수도 있지만 데이터를 추출하려면 태깅 시스템을 이해해야합니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.