【问题标题】:GeoJson c# example parse countries in the world and generate Geojson for each countryGeoJson c#示例解析世界各国并为每个国家生成Geojson
【发布时间】:2016-08-20 19:14:15
【问题描述】:

寻找如何使用 geojson.net 解析/反序列化 Geojson 文件的示例。由于某种原因,没有关于如何使用 geojson.net 包的示例。

我想在我的网站上通过 google maps api 使用它。目前我使用多边形形状,但希望将 geojson 对象用于图层,因为这似乎是一种更好的格式。

使用c#我想序列化Geojson,选择特定的国家边界并生成一个新的geojson文件,它可以作为一个层被引用并添加到谷歌地图中。

为了测试这一点,我创建了一个 colsole 应用程序来尝试反序列化 GeoJson,这不起作用(请您给我一些关于反序列化 Geojson 的正确方法的指导吗?)

        static void Main(string[] args)
    {
        string Jsonstring = File.ReadAllText("c:/worldborders.json");
        JavaScriptSerializer ser = new JavaScriptSerializer();
        List<GeoJsonProperties> ns = (List<GeoJsonProperties>)ser.Deserialize(Jsonstring, typeof(List<GeoJsonProperties>));

?ns is Empty?


    }

我使用在线生成器 http://json2csharp.com/ 为 geojson 文件创建了一个类(我原以为 GeoJson.net 会将该类作为其标准),GeoJsonProperties,

 public class GeoJsonProperties
{
    public int scalerank { get; set; }
    public string featurecla { get; set; }
    public double labelrank { get; set; }
    public string sovereignt { get; set; }
    public string sov_a3 { get; set; }
    public double adm0_dif { get; set; }
    public double level { get; set; }
    public string type { get; set; }
    public string admin { get; set; }
    public string adm0_a3 { get; set; }
    public double geou_dif { get; set; }
    public string geounit { get; set; }
    public string gu_a3 { get; set; }
    public double su_dif { get; set; }
    public string subunit { get; set; }
    public string su_a3 { get; set; }
    public double brk_diff { get; set; }
    public string name { get; set; }
    public string name_long { get; set; }
    public string brk_a3 { get; set; }
    public string brk_name { get; set; }
    public object brk_group { get; set; }
    public string abbrev { get; set; }
    public string postal { get; set; }
    public string formal_en { get; set; }
    public string formal_fr { get; set; }
    public string note_adm0 { get; set; }
    public string note_brk { get; set; }
    public string name_sort { get; set; }
    public string name_alt { get; set; }
    public double mapcolor7 { get; set; }
    public double mapcolor8 { get; set; }
    public double mapcolor9 { get; set; }
    public double mapcolor13 { get; set; }
    public double pop_est { get; set; }
    public double gdp_md_est { get; set; }
    public double pop_year { get; set; }
    public double lastcensus { get; set; }
    public double gdp_year { get; set; }
    public string economy { get; set; }
    public string income_grp { get; set; }
    public double wikipedia { get; set; }
    public object fips_10 { get; set; }
    public string iso_a2 { get; set; }
    public string iso_a3 { get; set; }
    public string iso_n3 { get; set; }
    public string un_a3 { get; set; }
    public string wb_a2 { get; set; }
    public string wb_a3 { get; set; }
    public double woe_id { get; set; }
    public string adm0_a3_is { get; set; }
    public string adm0_a3_us { get; set; }
    public double adm0_a3_un { get; set; }
    public double adm0_a3_wb { get; set; }
    public string continent { get; set; }
    public string region_un { get; set; }
    public string subregion { get; set; }
    public string region_wb { get; set; }
    public double name_len { get; set; }
    public double long_len { get; set; }
    public double abbrev_len { get; set; }
    public double tiny { get; set; }
    public double homepart { get; set; }
}

public class Geometry
{
    public string type { get; set; }
    public List<List<List<object>>> coordinates { get; set; }
}

public class Feature
{
    public string type { get; set; }
    public GeoJsonProperties  properties { get; set; }
    public Geometry geometry { get; set; }
}

public class RootObject
{
    public string type { get; set; }
    public List<Feature> features { get; set; }
}

}

【问题讨论】:

    标签: c# json geojson


    【解决方案1】:

    GeoJSON.Net 与 Newtonsoft.Json 一起使用。您可以像使用该库一样反序列化。

    var geoJsonObject = JsonConvert.DeserializeObject<Point>(json);
    

    【讨论】:

      【解决方案2】:

      要使用 GeoJSON.Net 库反序列化 FeatureCollection 对象(就像您在问题中提到的那样),请使用以下代码:

      var collection = JsonConvert.DeserializeObject<FeatureCollection>(json);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        相关资源
        最近更新 更多