Tìm kiếm danh sách toàn diện các giá trị vĩ độ và kinh độ cho các thành phố trên khắp thế giới?


21

Tôi đang phát triển một ứng dụng tính toán khoảng cách giữa các thành phố bằng các giá trị Kinh độ và Vĩ độ tương ứng.

Nhưng vấn đề là ở đâu để có được một danh sách toàn diện về các giá trị vĩ độ và kinh độ của các thành phố này?


3
Tôi sẽ tìm xung quanh developers.google.com/mapswiki.openstreetmap.org/wiki/API để bắt đầu

Âm thanh như một truy vấn tốt cho WolframAlpha.com.

Câu trả lời:


5

GeoLite City tại Cơ sở dữ liệu có thể tải xuống GeoLite Legacy gần như là tiêu chuẩn theo như tôi biết.


2
Tôi không hiểu, đây là danh sách các thành phố toàn cầu như thế nào? Là liên kết này thậm chí chính xác? Nó không nên trỏ đến GeoliteCity?
G-wizard


Nó không có tên nhà nước. Bất cứ cách nào để có được nó?
Vivek Sancheti

25

Đừng quên bộ dữ liệu Geonames :

Cơ sở dữ liệu địa lý GeoNames bao gồm tất cả các quốc gia và chứa hơn tám triệu dấu vị trí có sẵn để tải xuống miễn phí.


9
tải xuống tệp "thành phố" tại download.geonames.org/export/dump
Mike T

Nhưng bất cứ ai cũng có thể cho biết dữ liệu điểm thành phố Hoa Kỳ từ geoname chính xác đến mức nào, ý tôi làhttp://download.geonames.org/export/dump/
SIslam

1
6 năm sau ... phiên bản miễn phí có 7300 thành phố và phiên bản trả phí có 3,9 triệu. simplemaps.com/data/world-cities
Synesso

6

Địa điểm đông dân cư của Trái đất tự nhiên có thể là một lựa chọn khác.


Cảm ơn đã giúp đỡ. Nhưng tôi đang tìm Vĩ độ và Kinh độ của các Thành phố trên khắp thế giới.
xin chào

2
@ dotman14: Bộ dữ liệu có nghĩa là bao gồm all admin-0 and many admin-1 capitals, major cities and towns, plus a sampling of smaller towns in sparsely inhabited regions. Và giá trị latlon có thể được tìm thấy dưới dạng hai cột trong DBFtệp.
radek

Ngoài ra, trình chuyển đổi DBF trực tuyến này sang CSV dường như hoạt động dbfconv.com nhưng giới hạn kích thước tệp tải lên chỉ cho phép phiên bản cơ sở dữ liệu "đơn giản" được chuyển đổi.
Nakilon

Một lưu ý khác POP_MAX,POP_MIN,POP_OTHER = "158000","113700","107890"dành cho thị trấn của tôi, đó thực sự là tối đa 173000 trong kỷ nguyên của Liên Xô.
Nakilon

3

Bạn cũng có thể trích xuất dữ liệu từ OpenStreetMap (sử dụng API của họ, như được mô tả ở đây ) hoặc đơn giản là từ Wikipedia. Hầu hết các trang Wikipedia cho các thành phố có tọa độ của thành phố.

Tất nhiên, điều này sẽ đòi hỏi một chút kịch bản, và có thể là một danh sách các thành phố bạn muốn.


3

Sử dụng OpenStreetMap, truy cập Internet, công cụ wget và Bộ lọc XPath như XML :: XPath . Yêu cầu nên được chia thành các BBoxes 2x2 độ. Dưới đây là một ví dụ cho 12 độ tây cho đến 14 độ đông và 52 độ nam và 54 độ bắc. Berlin ở bên trong .. với rất nhiều infos. Đối với các đơn vị nhỏ hơn sử dụng nơi = thị trấn. Định dạng đến là 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>
 ...

Một kịch bản máy gặt đập perl đơn giản:

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

Đã tạo đầu ra (xin lỗi LANG của 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

Bạn có thể thử một từ tên địa lý hoàn toàn miễn phí ..

Ngoài ra còn có nhiều cơ sở dữ liệu trả phí trên internet như www.worldcitiesdatabase.com hoặc geodatasource.com.

Bạn cũng có thể sử dụng dữ liệu đường phố mở nhưng bạn cần hiểu hệ thống gắn thẻ để trích xuất dữ liệu.



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.