Mencari daftar komprehensif nilai lintang dan bujur untuk kota-kota di seluruh dunia?

22

Saya sedang mengembangkan aplikasi yang menghitung jarak antar kota menggunakan masing-masing nilai Bujur dan Lintang.

Tetapi masalahnya adalah di mana mendapatkan daftar lengkap nilai garis lintang dan bujur dari kota-kota ini?

Halo
sumber
3
Saya akan melihat sekitar developers.google.com/maps dan wiki.openstreetmap.org/wiki/API untuk memulai
Kedengarannya seperti permintaan yang bagus untuk WolframAlpha.com.

Jawaban:

6

Kota Geolite di Geolite Legacy Unduhan Database cukup banyak standar sejauh yang saya sadari.

PolyGeo
sumber
2
Saya tidak mengerti, bagaimana ini daftar kota global? Apakah tautan ini benar? Tidakkah itu mengarah ke GeoliteCity?
G-wizard
Tautannya
vero4ka
Itu tidak memiliki nama negara. Ada cara untuk mendapatkannya?
Vivek Sancheti
26

Jangan lupa tentang dataset Geonames :

Basis data geografis GeoNames mencakup semua negara dan berisi lebih dari delapan juta nama tempat yang tersedia untuk diunduh secara gratis.

Ryan Dalton
sumber
9
unduh file "kota" di download.geonames.org/export/dump
Mike T
Tapi bisakah ada yang tahu seberapa akurat data titik kota AS dari geoname, maksud sayahttp://download.geonames.org/export/dump/
SIslam
1
6 tahun kemudian ... versi gratis memiliki 7300 kota dan versi berbayar memiliki 3,9 juta. simplemaps.com/data/world-cities
Synesso
6

Tempat Berpopulasi Bumi Alami bisa menjadi pilihan lain.

Radek
sumber
Terima kasih untuk bantuannya. Tapi saya mencari Latitude dan Longitudes of Cities di seluruh dunia.
Halo
2
@ dotman14: Dataset dimaksudkan untuk terdiri dari all admin-0 and many admin-1 capitals, major cities and towns, plus a sampling of smaller towns in sparsely inhabited regions. Dan nilai latlon dapat ditemukan sebagai dua kolom di dalam DBFfile.
radek
Juga konverter DBF online ke CSV ini tampaknya berfungsi dbfconv.com tetapi batas ukuran file unggahan hanya memungkinkan versi database "sederhana" untuk menjadi konverter.
Nakilon
Catatan lain adalah POP_MAX,POP_MIN,POP_OTHER = "158000","113700","107890"untuk kota saya, yang benar-benar 173000 max di zaman USSR.
Nakilon
3

Anda juga dapat mengekstrak data dari OpenStreetMap (menggunakan misalnya API mereka, sebagai dijelaskan di sini ), atau hanya dari Wikipedia. Sebagian besar halaman Wikipedia untuk kota memiliki koordinat kota.

Tentu saja, ini membutuhkan sedikit skrip, dan mungkin daftar kota yang Anda inginkan.


sumber
3

Gunakan OpenStreetMap, akses Internet, alat wget dan Filter XPath seperti XML :: XPath . Permintaan harus dipotong dalam 2x2 derajat BBoxes. Di sini contoh untuk 12 deg barat sampai 14 deg timur dan 52 deg selatan dan 54 deg utara. Berlin ada di dalam .. dengan banyak info. Untuk unit yang lebih kecil gunakan place = town. Format yang masuk adalah 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>
 ...

Script perl pemanen sederhana:

#!/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
# --------------------------------------------------------

Output yang dihasilkan (maaf LANG bahasa Jerman dari 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
huckfinn
sumber
0

Anda dapat mencoba yang dari geonames yang benar-benar gratis ..

Ada juga banyak database berbayar di internet seperti www.worldcitiesdatabase.com atau geodatasource.com juga

Anda juga dapat menggunakan data jalan terbuka tetapi Anda harus memahami sistem penandaan untuk mengekstrak data.

Nitin
sumber