2016-08-20 416 views
1

尋找如何使用geojson.net解析/反序列化Geojson文件的示例。由於某些原因,沒有關於如何使用geojson.net軟件包的示例。GeoJson c#示例解析世界各國併爲每個國家生成Geojson

我想用我的網站與谷歌地圖API。目前我使用多邊形的形狀,但想要使用geojson對象的圖層,因爲這似乎是一個更好的格式。

使用c#我想序列化Geojson,選擇特定的國家邊界並生成一個新的geojson文件,該文件可以是引用並添加到Google地圖中作爲圖層。

來測試這一點,我創建了一個colsole應用嘗試deserilaize的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; } 
} 

}

回答

2

GeoJSON.Net適用於Newtonsoft.Json。您可以按照使用該庫的相同方式反序列化。

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