2013-03-08 7 views
5

Ich möchte auf der Server-Seite nur mit C# erkennen, ob eine Latitude/Longitude basierte Koordinate innerhalb einer Fläche (Polygon) aus Latitude/Longitude basierten Punkten ist. Ich glaube, der richtige Weg ist Raycasting, aber vielleicht gibt es bereits eine C# Implementierung, da es nicht trivial ist?Ermitteln, ob Punkt in Breiten-/Längengrad basierend Polygon

Auch verstehe ich, dass SQL Server hat einige Geometrie-Funktion wie STIntersects, aber um zu verwenden, dass ich sowohl SQL Server 2008 ausgeführt werden muss und jede Überprüfung würde eine Datenbankverbindung beinhalten, die unerwünscht ist.

+0

Ein eher allgemeinerer Algorithmus wäre es, nach "Wie erkenne ich, ob ein Punkt in ein unregelmäßig geformtes Polygon fällt" zu fragen oder zu suchen. Ich weiß es eigentlich nicht, ich könnte wahrscheinlich etwas von Grund auf schreiben, aber es wäre sicherlich nicht das effizienteste Stück Code ... jedenfalls nicht zuerst. – Nevyn

Antwort

0

Ich putzte im Internet für ein bisschen und fand this link.

Das Beispiel ist in C geschrieben, aber es sieht so aus, als ob es sehr leicht angepasst werden könnte, um mit C# - und Long/Lat-Koordinaten zu arbeiten. Sie müssen jedoch die Crossover-Linien (NS/EW) beachten und Code hinzufügen, um dies zu kompensieren, entweder, oder eine Dezimalumwandlung der LatLong-Werte vor dem Ausführen der Funktion vornehmen (West und South werden mit Werten < 0 dargestellt).

0

Da eine Kugel lokal diffeomorph zur Ebene ist, können Sie jeden Algorithmus verwenden, der auf der kartesischen Ebene arbeitet, z. this SO question. Sie müssen nur arbeiten, um Koordinaten zu übersetzen, wenn Ihr Polygon eine Stange enthält. Abhängig von Ihrem Anwendungsfall können Sie diese Eingaben möglicherweise ablehnen.

+0

Vielleicht ist es hier erwähnenswert, dass Geometrien, die den 180er Meridian kreuzen (dh der Punkt, an dem die kartesische Ebene sich nicht umwickelt, sondern der Globus), ebenfalls Kopfschmerzen bereiten können. Point-in-Polygon für GIS muss 180-wrap-aware sein, sonst können sehr seltsame Ergebnisse erzielt werden. – jlmt

Verwandte Themen