从哪里获取有关所有欧洲城市、村庄的数据?

Posted

技术标签:

【中文标题】从哪里获取有关所有欧洲城市、村庄的数据?【英文标题】:where to get data about all european cities, villages from? 【发布时间】:2012-03-07 01:03:49 【问题描述】:

我正在寻找有关所有欧洲城市、村庄和城镇的数据。具体来说,我对姓名、邮政编码、电话区号、纬度、经度、人口及其所属国家感兴趣。

1.我可以从哪里提取最全面的数据?

2.如何从 LinkedGeoData 查询数据

首先,我尝试从 LinkedGeoData (http://linkedgeodata.org/sparql) 中提取数据。但是,我无法得到任何合理的结果。执行以下查询时,仅偶尔出现人口,其他字段始终留空。

SELECT * WHERE

   ?place a <http://linkedgeodata.org/ontology/Place> .  
   OPTIONAL  ?place <http://linkedgeodata.org/property/openGeoDB:name> ?name . 
   OPTIONAL  ?place <http://linkedgeodata.org/ontology/openGeoDB:lat> ?lat .  
   OPTIONAL  ?place <http://linkedgeodata.org/ontology/openGeoDB:lon> ?lon .  
   OPTIONAL  ?place <http://linkedgeodata.org/property/openGeoDB:postal_codes> ?postal . 
   OPTIONAL  ?place <http://linkedgeodata.org/ontology/openGeoDB:telephone_area_code> ?tel . 
   OPTIONAL  ?place <http://linkedgeodata.org/ontology/population> ?population . 
   OPTIONAL  ?place <http://linkedgeodata.org/ontology/openGeoDB:is_in_loc_id> ?inLocId . 

   ?place <http://linkedgeodata.org/property/is_in> ?in. 
   FILTER ( REGEX(?in, "europe", "i") ) .

我注意到所有包含openGeoDB 的属性都是空白的,尽管这些属性存在。那么查询有什么问题呢?

【问题讨论】:

【参考方案1】:

要查找适当的数据集,您可以查看数据集目录(the Data Hub)或数据问答板(Get the Data)。

回复。您的第二个问题,linkedgeodata 上的数据似乎有点稀疏,或者必须利用其他属性和/或类。但是,以下查询似乎至少提供了一些结果,您可以看到欧洲的每个地方都可以通过 lgdb:is_in 属性进行处理

PREFIX lgd:<http://linkedgeodata.org/> 
PREFIX lgdo:<http://linkedgeodata.org/ontology/> 
PREFIX lgdp:<http://linkedgeodata.org/property/> 
PREFIX lgdoogdb: <http://linkedgeodata.org/ontology/openGeoDB> 
PREFIX lgdpogdb: <http://linkedgeodata.org/property/openGeoDB> 

SELECT * 
FROM <http://linkedgeodata.org> 
WHERE 

   ?place a lgdo:Place .  
   OPTIONAL  ?place lgdpogdb:name ?name . 
   OPTIONAL  ?place lgdoogdb:lat ?lat .  
   OPTIONAL  ?place lgdoogdb:lon ?lon .  
   OPTIONAL  ?place lgdpogdb:postal_codes ?postal . 
   OPTIONAL  ?place lgdoogdb:telephone_area_code ?tel . 
   OPTIONAL  ?place lgdo:population ?population . 
   OPTIONAL  ?place lgdoogdb:is_in_loc_id ?inLocId . 
   OPTIONAL  ?place lgdp:is_in ?in . 

LIMIT 100

例如通过以下查询,您可以稍微探索一下数据集的结构:

PREFIX lgdo:<http://linkedgeodata.org/ontology/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT * 
FROM <http://linkedgeodata.org> 
WHERE 

   ?place a lgdo:Place .  
   ?place rdfs:label ?label .

LIMIT 100

...最后,以下查询返回欧洲的 100 个地点:

PREFIX lgdo:<http://linkedgeodata.org/ontology/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT * 
FROM <http://linkedgeodata.org> 
WHERE 

    ?place a lgdo:Place .
    ?place rdfs:label ?label .  
    ?place <http://linkedgeodata.org/property/is_in%3Acontinent> "Europe" .
    FILTER ( lang(?label) = "" )

LIMIT 100

请注意,FILTER 表达式用于过滤掉具有语言标签的每种语言特定标签,即,该查询将显示纯文字。

【讨论】:

以上是关于从哪里获取有关所有欧洲城市、村庄的数据?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以获得有关如何使用 Apollo 和 GraphQL 获取数据的文档?

获取一个国家所有城市的坐标和人口

哪里可以下载行政区划图?

从哪里获取地理数据?

如何使用地址和纬度/经度获取世界上所有的公园

使用地名数据库获取城市所属的州和县?