Buscando un ejemplo de cómo analizar / deserializar archivos Geojson usando geojson.net. por alguna razón, no hay ejemplos de cómo usar el paquete geojson.net.

Me gustaría usar esto en mi sitio con la API de Google Maps. Actualmente uso formas poligonales pero quiero avanzar hacia el uso de objetos geojson para las capas, ya que este parece ser un formato mejor.

Usando c # Me gustaría serializar Geojson, seleccionar fronteras de países específicos y generar un nuevo archivo geojson que puede ser referencias y agregar a Google Maps como una capa.

Para probar esto, creé una aplicación de consola para intentar deserializar el Json, esto no funciona (¿podría darme alguna dirección sobre la forma correcta de deserializar 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?


    }

Creé una clase para el archivo geojson usando el generador en línea http://json2csharp.com/ (pensé que GeoJson .net incluiría la clase como estándar), 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
user2668812 20 ago. 2016 a las 22:14

2 respuestas

La mejor respuesta

GeoJSON.Net trabaja con Newtonsoft.Json. puede deserializar de la misma manera que lo haría con esa biblioteca.

var geoJsonObject = JsonConvert.DeserializeObject<Point>(json);
3
matt_lethargic 6 mar. 2017 a las 14:58

Para deserializar un objeto FeatureCollection (como el que menciona en la pregunta) usando la biblioteca GeoJSON.Net, use el siguiente código:

var collection = JsonConvert.DeserializeObject<FeatureCollection>(json);
3
gpanagakis 6 oct. 2018 a las 13:47