2015-10-03 194 views
-2

在我的工作中,我需要从dbpedia中找到货币,人口等邻国的属性。我该怎么办? 一个解决方案可能是这样的.. 一个sparql查询,它可以从dbpedia获取所有国家的经度和纬度,并找到配套的国家离德国很近。那怎么办?但我是sparql新手?所以,我不确定,对此的查询将如何?我怎样才能得到一个国家的邻居国家?

供参考:我不需要所有的邻居。三个邻居对我来说就够了。

+0

你只有在德国的邻国有兴趣(在这种情况下,你不需要DBpedia,我现在可以告诉你)还是只是一个随机提到的例子? – stakx

+0

这只是一个例子 –

回答

0

通过只查询dbpedia,不可能得到邻居国家。最简单的方法可能是,通过一个数学方程得到经度和纬度的距​​离。以下是获得的距离

private double getDistance(double submittedCountryLat,double submittedCountryLong,double countryLat,double countryLong){ 

     double distance = 0; 
     double submittedCountryLatRadian=Math.toRadians(submittedCountryLat);  
     double submittedCountryLongRadian=Math.toRadians(submittedCountryLong); 
     double countryLatRadian=Math.toRadians(countryLat); 
     double countryLongRadian=Math.toRadians(countryLong); 

     double absoluteDistanceLat=submittedCountryLatRadian-countryLatRadian; 
     double absoluteDistanceLong=submittedCountryLongRadian-countryLongRadian; 

     distance=Math.sin(absoluteDistanceLat/2)*Math.sin(absoluteDistanceLat/2) + 
       Math.cos(submittedCountryLatRadian)*Math.cos(countryLatRadian)* Math.sin(absoluteDistanceLong/2)*Math.sin(absoluteDistanceLong/2); 

     distance=2* Math.asin(Math.sqrt(distance)); 
     return distance*6371; 

    } 

然后排序的所有距离,国名,并采取国家名称距离最短的java的植入

相关问题