본문 바로가기

Web_Application/C#

[C#] GeoJson 파일 읽고 EntityFramework 사용하기



NuGet Package


GeoJSON.Net

GeoJSON.Net.Contrib.EF

GeoJSON.Net.Contrib.EntityFramework

GeoJSON.Net.Contrib.MsSpatial

GeoJSON.Net.Contrib.Wkb



string geoJson = System.IO.File.ReadAllText(@"{{geoJson파일}}}");
var geoJsonObject = JsonConvert.DeserializeObject<GeoJSON.Net.Feature.FeatureCollection>(geoJson);
geoJson Text 파일을 읽어 Desirialize 하여 object화 합니다. 모델은 GeoJson.Net의 FeatureCollection 을 사용합니다.



foreach (var feature in geoJsonObject.Features)
{
    foreach (var key in feature.Properties.Keys)
    {
        if (key.Equals("BASE_DT"))
            ... = feature.Properties["BASE_DT"].ToString();    
    }

    //geometry/geography type 처리
    if (feature.Geometry.Type.ToString().Equals("MultiPolygon"))
    {
        var geometryWkb = feature.Geometry.ToWkb();
        var dbGeometry = DbGeometry.MultiPolygonFromBinary(geometryWkb, 4326);
    }    
}
features > feature > properties 순으로 foreach 찾아들어갑니다. properties 부분은 사용자 커스터마이징 가능한 부분이므로 key 값에 따라 분류하여 insert/update 시 분기 처리합니다. geometry/geography data type을 위해 wkb(well known binary)를 사용합니다.

좌표계의 변환은 wkb 이후 별도 진행 할 수 있습니다.