Dünyadaki şehirler için kapsamlı enlem ve boylam değerleri listesi mi arıyorsunuz?


22

Şehirler arası mesafeyi kendi Boylam ve Enlem değerlerini kullanarak hesaplayan bir uygulama geliştiriyorum.

Ancak sorun, bu şehirlerin enlem ve boylam değerlerinin kapsamlı bir listesini nereden bulacağınız?


3
Etrafa bakmak istiyorum developers.google.com/maps ve wiki.openstreetmap.org/wiki/API bir başlangıç için

WolframAlpha.com için iyi bir sorgu gibi geliyor.

Yanıtlar:



26

Geonames veri setini unutma :

GeoNames coğrafi veritabanı tüm ülkeleri kapsamaktadır ve ücretsiz olarak indirilebilecek sekiz milyondan fazla alan adı içermektedir.


9
download.geonames.org/export/dump adresinden "şehirler" dosyası indirin
Mike T

Ama kimse ABD'nin şehir noktası verisinin ne kadar doğru olduğunu söyleyebiliyor mu, demek istediğimhttp://download.geonames.org/export/dump/
SIslam

1
6 yıl sonra ... ücretsiz sürüm 7300 şehir, ücretli sürüm ise 3,9 milyon. simplemaps.com/data/world-cities
Synesso

6

Doğal Dünya'nın Nüfuslu Yerleri başka bir seçenek olabilir.


Yardım için teşekkürler. Ama ben dünyadaki şehirlerin enlem ve boylamlarını arıyordum.
merhaba

2
@ dotman14: Dataset'ten ibaret olması gerekiyor all admin-0 and many admin-1 capitals, major cities and towns, plus a sampling of smaller towns in sparsely inhabited regions. Ve latlon değerleri DBFdosyanın içinde iki sütun olarak bulunabilir .
radek

Ayrıca CSV için bu çevrimiçi DBF dönüştürücü dbfconv.com çalışıyor gibi görünüyor ancak yükleme dosya boyutu sınırı, veritabanının yalnızca "basit" sürümünün dönüştürücü olmasını sağlıyor.
Nakilon

Başka bir not POP_MAX,POP_MIN,POP_OTHER = "158000","113700","107890"benim kasabam için, bu gerçekten SSCB döneminde en fazla 173000 idi.
Nakilon

3

Verileri OpenStreetMap'ten (örneğin, burada açıklanan API'larını kullanarak ) veya yalnızca Wikipedia'dan da çıkarabilirsiniz. Şehirlerin Wikipedia sayfalarının çoğu kentin koordinatlarına sahiptir.

Tabii ki, bu biraz komut dosyası ve muhtemelen istediğiniz şehirlerin bir listesini gerektirir.


3

OpenStreetMap, İnternet erişimi, wget aracı ve XML :: XPath gibi bir XPath Filtresi kullanın . İstek 2x2 derece BBoxes cinsinden karıştırılmalıdır. Burada, 14 ° doğuya kadar 12, batı, 52 gün güney ve 54 gün kuzey bölgeye bir örnek. Berlin içeride ... birçok bilgi içeriyor. Daha küçük birimler için place = town kullanın. Gelen format XML'dir.

  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>
 ...

Basit bir perl biçerdöver komut dosyası:

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

Oluşturulan çıktı (üzgünüm wget in almanca LANG)

./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

Birini tamamen ücretsiz olan geonames'den deneyebilirsiniz ..

İnternette www.worldcitiesdatabase.com veya geodatasource.com gibi çok sayıda ücretli veritabanı var

Açık sokak verilerini de kullanabilirsiniz, ancak verileri ayıklamak için etiketleme sistemini anlamanız gerekir.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.