.NET에서 (공간) 기하학을 계산하고 결정하는 경우 NetTopologySuite (NTS)를 권장합니다.
NetTopologySuite, 통칭 "NTS"는, JTS - Java Topology Suite 를 .NET 에 이식한 것입니다.
이 JTS 는, 그 밖에도 각 언어에 이식되고 있습니다, 다음에 일람을 올릴 때군요.
JTS는 PostgreSQL, Solr, Elasticsearch 등에도 채용되고 있는 충분히 「시든」라이브러리로, 그 .NET 이식인 NTS도 충분히 시들어지고 있습니다.
이번에는 Xamarin Workbooks에서 시험을 해보자.
Xamarin Workbooks의 새 문서에서 Nuget Packages에 "NetTopologySuite"를 추가하고 다음 코드를 입력합니다.
using NetTopologySuite.Geometries;
using NetTopologySuite.IO;
using NetTopologySuite.Operation.Distance;
var wktReader = new WKTReader();
var polyline = wktReader.Read("LINESTRING(10 5, 15 10, 20 7)");
var point = wktReader.Read("POINT(16 6)");
var distance = new DistanceOp(polyline, point);
var nearestLocation = distance.NearestLocations();
nearestLocation.ToList();
에서 실행 버튼을 누르거나 cmd + enter를 누르면 코드가 실행되고 맨 아래 행의 결과가 대화식으로 표시됩니다. 아래 그림과 같은 느낌으로.
여기서는
DistanceOp
라고 하는 연산 클래스를 사용해 (10, 5) - (15, 10) - (20 7) 로 이루어지는 선분 (폴리 라인, NTS 에서는 LineString 라고 한다) 과 (16, 6) 의 점과의 가장 가까운 점(NearestLocations)을 얻습니다.결과에는 두 개의 GeometoryLocation이 있으며, 첫 번째는 폴리선 중에서 점과 가장 가까운 선분상의 좌표(Coordinate), 가장 가까운 정점 인덱스(SegmentIndex) 등이 포함됩니다. 두 번째는 Point 중 폴리 라인과 가장 가까운 점이므로 Point 그 자체입니다.
NTS/JTS 의 기능은 방대하고, 괜찮은 문서도 없기 때문에 초보로 기능을 찾는 것도 힘들지만, API 문서나 UnitTest 를 바라보면 여러가지 알 수 있습니다. 도형의 연산, 판정으로 곤란하면 아테로 해 보면 좋을 것입니다.
Xamarin Workbooks 를 사용하는 것은 오랜만이지만, nuget package 의 추가를 간단하게 할 수 있게 되어, 사용하기 쉬워지고 있군요.
좌표치가 그래픽으로 가시화할 수 있으면 좋겠지만, 분명 방법이 있을 것 같네요.
NTS 와 같은 간단한 라이브러리라면 Xamarin Workbooks 를 사용해 멋지게 시험할 수 있으므로 활용해 가고 싶은 것입니다.
Reference
이 문제에 관하여(.NET에서 (공간) 기하학을 계산하고 결정하는 경우 NetTopologySuite (NTS)를 권장합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/amay077/items/dd656981c62fa9af02e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)