.NET 맵 컨트롤에서 GeoJSON 데이터를 시각화하는 방법
페이지 정보
작성자 GrapeCity 작성일 2023-07-11 14:06 조회 266회 댓글 0건본문
관련링크
GeoJSON은 JavaScript Object Notation(JSON)을 기반으로, 다양한 지리적 데이터 구조를 인코딩하기 위한 형식입니다. 특성에는 점(주소 및 위치), 선 문자열(거리, 고속도로, 경계), 다각형(국가, 주/도, 지역) 등 다중 컬렉션이 포함됩니다.
ComponentOne Maps for WinForms, WPF 및 ASP.NET MVC에는 GeoJSON 형식 데이터를 시각화하기 위한 지원 기능이 기본 제공됩니다. 이번 스터디에서는 C1Map을 사용하여 Windows Forms 응용 프로그램에서 GeoJSON 형식으로 지정된 공항 데이터를 시각화하는 방법을 설명합니다.
C1Map을 이용한 GeoJSON 데이터 시각화
C1Map 컨트롤은 레이어를 사용하여 GeoJSON에 바인딩할 수 있는 GeoJSON 형식 데이터의 시각화를 지원합니다. GeoJSON 데이터를 시각화하기 위한 단계는 다음과 같습니다.
시각화할 데이터가 포함된 GeoJSON 파일을 로드합니다.
각 에 대해 을 만듭니다.
모든 항목을 에 추가한 후 C1Map 컨트롤에 추가합니다.
먼저, GeoJsonReader.Read(stream) 메서드를 사용하여 GeoJSON 파일을 읽어야 합니다.
이 메서드는 의 목록을 반환합니다.
var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MapGeoJson_FW.Resources.airports.geojson"); //fetch list of GeoGeometryRecord var records = C1.FlexMap.GeoJsonReader.Read(stream);
각 레코드에 대해 을 만들어야 합니다.
//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; }
다음으로, 각 항목을 에 추가해야 합니다.
여기서 텍스트 색, 테두리 색 등 항목에 대한 응용 프로그램 전체 스타일을 설정할 수 있습니다.
//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 컨트롤을 에서 C1.Win.Map(WinForms) 또는 C1.WPF.Map 라이브러리의 일부로 다운로드하거나할 수 있습니다.
지금 바로 ComponentOne을 다운로드하여 직접 테스트해 보세요!
댓글목록
등록된 댓글이 없습니다.