【问题标题】:How to get in which country somebody is without using any API? Latitude and longitude countries coordinates如何在不使用任何 API 的情况下进入某人所在的国家/地区?经纬度国家坐标
【发布时间】:2022-01-03 20:32:39
【问题描述】:

在不使用 GoogleMaps、HereMaps 等 API 的情况下,检查我(例如)人在哪个国家/地区(地理位置)的最佳和最简单的方法是什么?

我只有我的(例如)人员的经纬度坐标,并想自动检查他们当前所在的国家/地区。

【问题讨论】:

    标签: c# api location coordinates polygon


    【解决方案1】:
    1. 下载 QGIS - 很棒的地理坐标程序,例如 Google Maps Pro,但具有更多选项和功能。

    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;
           }
       }
      

    瞧。希望它能帮助我们很多人!

    【讨论】:

    • "Well-known text" 是官方 GIS 术语并指定格式,因此 .wkt 非常有意义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多