GeoJson c# example 解析世界各国并为每个国家生成Geojson
GeoJson c# example parse countries in the world and generate Geojson for each country
寻找如何使用 geojson.net 解析/反序列化 Geojson 文件的示例。由于某种原因,没有关于如何使用 geojson.net 包的示例。
我想在我的网站上将其与 google 地图 api 一起使用。目前我使用多边形形状,但想转向使用 geojson 对象作为图层,因为这似乎是一种更好的格式。
使用 c# 我想序列化 Geojson,select 特定国家/地区边界并生成一个新的 geojson 文件,该文件可以作为参考并添加到 google 地图作为图层。
为了对此进行测试,我创建了一个 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 文件创建了一个 class(我原以为 GeoJson.net 会包含 class 作为其标准), GeoJson 属性,
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; }
}
}
GeoJSON.Net 适用于 Newtonsoft.Json。您可以像使用该库一样反序列化。
var geoJsonObject = JsonConvert.DeserializeObject<Point>(json);
要使用 GeoJSON.Net 库反序列化 FeatureCollection 对象(如您在问题中提到的对象),请使用以下代码:
var collection = JsonConvert.DeserializeObject<FeatureCollection>(json);
寻找如何使用 geojson.net 解析/反序列化 Geojson 文件的示例。由于某种原因,没有关于如何使用 geojson.net 包的示例。
我想在我的网站上将其与 google 地图 api 一起使用。目前我使用多边形形状,但想转向使用 geojson 对象作为图层,因为这似乎是一种更好的格式。
使用 c# 我想序列化 Geojson,select 特定国家/地区边界并生成一个新的 geojson 文件,该文件可以作为参考并添加到 google 地图作为图层。
为了对此进行测试,我创建了一个 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 文件创建了一个 class(我原以为 GeoJson.net 会包含 class 作为其标准), GeoJson 属性,
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; }
}
}
GeoJSON.Net 适用于 Newtonsoft.Json。您可以像使用该库一样反序列化。
var geoJsonObject = JsonConvert.DeserializeObject<Point>(json);
要使用 GeoJSON.Net 库反序列化 FeatureCollection 对象(如您在问题中提到的对象),请使用以下代码:
var collection = JsonConvert.DeserializeObject<FeatureCollection>(json);