如何在不使用任何API的情况下进入哪个国家?国家的经纬度坐标



什么是最好的&最简单的方法来检查我(例如(的人在哪个国家(地理位置(,而不使用API,如谷歌地图,HereMaps等。

我只有我的(例如(人的经纬度坐标,想自动检查他们目前所在的国家。

  1. 下载QGIS-伟大的地理坐标程序,如谷歌地图专业版,但有更多的选项和功能。

  2. naturalearthdata.com(例如:https://www.naturalearthdata.com/downloads/50m-cultural-vectors/50m-admin-0-countries-2/(下载.shp文件。

在我的情况下,它是ne_10m_admin_0_countries_pol.shp

编辑:为了更好的准确性(小岛屿/州边界(,请使用:https://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/administrative-units-statistical-units/countries#countries20

(如果WKT文件对您来说太大,请转到矢量-几何工具-简化(

  1. 将此文件导入QGIS(大小"最大"的文件(

  2. 我们需要WKT(众所周知的文本->是的,扩展名imo最糟糕的名称(,所以下载扩展名(按照本教程:https://www.youtube.com/watch?v=N6WOzM00FLk)

  3. 单击";按区域选择特征或单击";(在工具栏中,在中间上方,靠近蓝色刷新图标(

  4. 单击WKT(从4。扩展名(,并将值复制到新的.txt文件并保存此文件(警告:一个文件,一个国家/地区(。

现在让我们进入编码:

  1. 在您的类中导入库

    using NetTopologySuite.IO;
    
  2. 阅读您要检查的所有国家/地区,例如:

    var Merica = File.ReadAllText(@"<fileToPatch>America_WKT.txt"); 
    
  3. 使用我们的库并创建GeometryFactory和WKT阅读器变量:

    var gf = NetTopologySuite.NtsGeometryServices.Instance.CreateGeometryFactory(4326); //NtsGeometryServices.DefaultSRID
    var wkt = new WKTReader();
    //(longitude, latitude) 
    // I used dictionary (key - value), but you can use just normal list/array/enumerable.
    var GeomDict = new Dictionary<string, NetTopologySuite.Geometries.Geometry>();
    GeomDict.Add("MericaFakYeah", wkt.Read(AmericaWktString));
    
  4. 创建您的最终功能:

    var pointStart = gf.CreatePoint(new NetTopologySuite.Geometries.Coordinate(longitudeStart, latitudeStart));
    foreach (var geom in geomDict)
    {
    var isLocation = geom.Value.Contains(pointStart);
    if (isLocation)
    {
    location = geom.Key;
    break;
    }
    }
    

沃伊拉。希望它能帮助我们很多人!

相关内容

  • 没有找到相关文章