! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

.NET 맵 컨트롤에서 GeoJSON 데이터를 시각화하는 방법 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

.NET 맵 컨트롤에서 GeoJSON 데이터를 시각화하는 방법

페이지 정보

작성자 GrapeCity 작성일 2023-07-11 14:06 조회 266회 댓글 0건

본문

GeoJSON은 지리적 특성을 JSON 형식으로 인코딩하기 위한 오픈 소스입니다. GeoJSON은 JavaScript Object Notation(JSON)을 기반으로, 다양한 지리적 데이터 구조를 인코딩하기 위한 형식입니다. 특성에는 점(주소 및 위치), 선 문자열(거리, 고속도로, 경계), 다각형(국가, 주/도, 지역) 등 다중 컬렉션이 포함됩니다.


ComponentOne Maps for WinForms, WPF 및 ASP.NET MVC에는 GeoJSON 형식 데이터를 시각화하기 위한 지원 기능이 기본 제공됩니다. 이번 스터디에서는 C1Map을 사용하여 Windows Forms 응용 프로그램에서 GeoJSON 형식으로 지정된 공항 데이터를 시각화하는 방법을 설명합니다.


.NET 맵 컨트롤



C1Map을 이용한 GeoJSON 데이터 시각화


C1Map 컨트롤은 레이어를 사용하여 GeoJSON에 바인딩할 수 있는 GeoJSON 형식 데이터의 시각화를 지원합니다. GeoJSON 데이터를 시각화하기 위한 단계는 다음과 같습니다.


  1. 시각화할 데이터가 포함된 GeoJSON 파일을 로드합니다.

  2. GeoGeometryRecord에 대해 VectorItem을 만듭니다.

  3. 모든 항목을 VectorLayer에 추가한 후 C1Map 컨트롤에 추가합니다.


먼저, GeoJsonReader.Read(stream) 메서드를 사용하여 GeoJSON 파일을 읽어야 합니다.

이 메서드는 GeoGeometryRecord의 목록을 반환합니다.

var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MapGeoJson_FW.Resources.airports.geojson");

//fetch list of GeoGeometryRecord
var records = C1.FlexMap.GeoJsonReader.Read(stream);

 

각 레코드에 대해 VectorItem을 만들어야 합니다.

//Create VectorItem for each GeoGeometryRecord
var items = records.Select(record => CreateVector(record));


이를 위해 GeoGeometryType을 특정한 C1Map 벡터 항목 유형과 연관시키는 CreateVector 메서드를 정의했습니다. 여기에서 여러 데이터 시각화할 방법을 사용자 정의할 수 있습니다.

예를 들어 각 Point 또는 MultiPoint에 대한 표식을 만듭니다. 표식은 모양, 크기 및 레이블을 갖습니다.

// Create VectorItem
private static VectorItem CreateVector(C1.FlexMap.GeoGeometryRecord record)
{
    VectorItem vector = null;

    switch (record.Geometry?.Type)
    {
        case C1.FlexMap.GeoGeometryType.Point:
        case C1.FlexMap.GeoGeometryType.MultiPoint:
            VectorPlacemark p = new VectorPlacemark();
            p.Marker.Shape = C1.FlexMap.MarkerShape.Circle;
            p.Marker.Size = new SizeF(6, 6);
            p.Marker.LabelPosition = C1.FlexMap.LabelPosition.Top;
            p.Tag = p.Marker.Caption = record.Data["name_en"]?.ToString();
            vector = p;
            break;
        case C1.FlexMap.GeoGeometryType.Polygon:
        case C1.FlexMap.GeoGeometryType.MultiPolygon:
            vector = new C1.Win.Map.VectorPolygon();
            break;
        case C1.FlexMap.GeoGeometryType.LineString:
        case C1.FlexMap.GeoGeometryType.MultiLineString:
            vector = new VectorPolyline();
            break;
        default:
            return null;
    }
    vector.Geometry = record.Geometry;
    return vector;
}


다음으로, 각 항목을 VectorLayer에 추가해야 합니다.

여기서 텍스트 색, 테두리 색 등 항목에 대한 응용 프로그램 전체 스타일을 설정할 수 있습니다.

//Add all VectorItems in a VectorLayer
var vl = new VectorLayer();
foreach (var item in items)
{
    if (item != null)
    {
        item.Style.BackColor = Color.LightGray;
        item.Style.Stroke.Color = Color.Gray;
        vl.Items.Add(item);
    }
}
vl.LabelVisibility = C1.FlexMap.LabelVisibility.AutoHide;
vl.LabelStyle.ForeColor = Color.Yellow;


마지막으로 C1Map 컨트롤에 벡터 레이어를 추가합니다.

c1Map1.Layers.Add(vl);


이처럼 GeoJson 데이터를 C1Map 컨트롤로 쉽게 시각화할 수 있습니다.

C1Map 컨트롤을 nuget.org에서 C1.Win.Map(WinForms) 또는 C1.WPF.Map 라이브러리의 일부로 다운로드하거나ComponentOne 자체를 다운로드 할 수 있습니다.




지금 바로 ComponentOne을 다운로드하여 직접 테스트해 보세요!

c1.png


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.