Ş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?
Ş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?
Yanıtlar:
GeoLite Legacy'daki GeoLite City İndirilebilir Veritabanları , bildiğim kadarıyla hemen hemen standart.
Geonames veri setini unutma :
GeoNames coğrafi veritabanı tüm ülkeleri kapsamaktadır ve ücretsiz olarak indirilebilecek sekiz milyondan fazla alan adı içermektedir.
http://download.geonames.org/export/dump/
Doğal Dünya'nın Nüfuslu Yerleri başka bir seçenek olabilir.
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 DBF
dosyanın içinde iki sütun olarak bulunabilir .
POP_MAX,POP_MIN,POP_OTHER = "158000","113700","107890"
benim kasabam için, bu gerçekten SSCB döneminde en fazla 173000 idi.
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.
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
Global Şehirler için bir başka seçenek daha: GRUMP sürüm 1 artık popülasyon büyüklüğü gibi özelliklere sahip ücretsiz bir yerleşim noktası katmanına sahip.
http://sedac.ciesin.columbia.edu/data/set/grump-v1-settlement-points
Alıntı listesini http://www.zuzemo.com/world-cities-and-administrative-divisions-database-german-edition adresinden indirdim, diğer dilleri de Almanca, İtalyanca, İspanyolca ...
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.
30 karakter daha başka bir ücretsiz veritabanı bla bla .. https://www.maxmind.com/en/worldcities