18 Stimmen

Ich muss wissen, ob der vordefinierte Punkt im Meer oder auf dem Land liegt.

Ich habe ein System, in das die Benutzer einige Koordinaten (Breitengrad/Längengrad) eingeben. Ich muss prüfen, ob die angegebenen Koordinaten im Meer liegen oder nicht. Gibt es einen Dienst, der mir die Antwort geben kann. Oder ist es möglich, dies mit Google Maps zu tun.

19voto

Vivien Barousse Punkte 20205

Sie können die Google Maps Geocode API .

Befindet sich Ihre Adresse auf dem Land, lautet der result_type der Antwort etwa "administrative_area". Sind Sie im Meer, lautet die Antwort "natural_feature".

Hier sind zwei Beispiele:

Edit: Einige weitere Beispiele als Antwort auf Kommentare:

16voto

John Ballinger Punkte 7184

Ich habe schon einmal darüber nachgedacht.

Ich würde keinen Webdienst verwenden, sondern ein ziemlich einfaches Bild. alt text

Dieses Bild ist entnommen aus http://www.vectorworldmap.com/vectormaps/vector-world-map-v2.2-blank.jpg

EDIT eines großartigen Kommentars

Die Lösung gefällt mir, aber ich bin mir nicht sicher, ob die Karte ganz genau ist oder gleichwinklig ist (womit man am einfachsten arbeiten könnte). Wie wäre es mit dieser Karte? naturalearth.springercarto.com/ne3_data/8192/masks/water_8k.png

//END

  • Ich würde diese Karte mit Längen- und Breitengraden versehen, damit Sie wissen, dass Ihre Karte korrekt ist.
  • Für jeden beliebigen Punkt würde ich die Position des Pixels auf dieser Karte bestimmen und die Farbe herausfinden (php kann dies tun).
  • Wenn die Farbe weiß ist, würde ich sagen, es ist Meer, schwarz = Land.
  • Wenn Sie keine Seen wollen, öffnen Sie die Karte und färben Sie alle Seen schwarz.

Wenn Sie super hochauflösende Karten benötigen, würde ich eine sehr große Karte kaufen und sie in ein Raster kleinerer Bilder aufteilen, die Sie laden können.

Wenn Sie dieses System super duper schnell machen müssen. Ich würde dieses Bild Pixel für Pixel und erstellen Sie eine Datenbank von diesem Zeug, so dass Sie es ziemlich schnell nachschlagen können. Aber schon dieses Bild unten dient als hervorragende Datenbank, die leicht überprüft oder geändert werden kann.

Wollten Sie Ozeane und Seen?

Ich bin neugierig, worauf Sie hinauswollen, denn ich mag dieses Problem.

Johannes.

8voto

tomcooks Punkte 71

In Anlehnung an John Ballinger habe ich diesen Trick erfolgreich angewendet:

  • Holen Sie sich ein 1x1 Pixel Google Bild statische Karte zentriert auf Ihre Koordinaten
  • Karte über Google Maps API in Schwarz (Land) und Weiß (Wasser) umwandeln
  • Feststellen, ob das Pixel schwarz oder weiß ist

In php:

$lat = your latitude
$lon = your longitude
$im = imagecreatefrompng('http://maps.googleapis.com/maps/api/staticmap?center='.$lat.','.$lon.'&zoom=21&format=png&sensor=false&size=1x1&maptype=roadmap&style=feature:administrative|visibility:off&style=feature:landscape|color:0x000000&style=feature:water|color:0xffffff&style=feature:road|visibility:off&style=feature:transit|visibility:off&style=feature:poi|visibility:off');
//get pixel color, put it in an array
$color_index = imagecolorat($im, 0, 0);
$color_tran = imagecolorsforindex($im, $color_index);

//if, for example, red value of the pixel is 0 we are on land
if($color_tran['red']==0){
    //do your thing
    echo "we are on land";
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X