6 votos

Predicción de la ruta marítimo evitando masas de la tierra

Estoy trabajando en un proyecto donde las siguientes funciones deben ser implementadas:

  1. La predicción de la ubicación de los buques (en ambiente marítimo) en un tiempo futuro. (Se puede hacer con el filtro de Kalman, IMM filtro y algunos otros algoritmos). Los barcos pueden estar en cualquier parte del mundo.

  2. Evitando masas de tierra durante la predicción.

  3. Encontrar las rutas más cortas a lo largo de las costas.

Estoy totalmente terminado con la primera parte que es la predicción sin considerar la línea de costa de información. Tengo problemas con las funciones 2 y 3.

Función 2 A veces, la predicción de la ubicación puede caer en la masa de tierra de la zona, lo cual es totalmente inaceptable. Yo estoy usando la zona costera shapefile http://openstreetmapdata.com/data/coastlines. Este archivo se ha convertido XY valores del mundo a costa de datos. He cargado este shapefile en postgreSQL y utilizar postgis para leer de la base de datos.

Mi idea es ir a través de todos los polígonos (línea de costa definidos en base a polígonos) y comprobar si la conexión de la línea de la ubicación actual y la predicción de la ubicación cruza el polígono. Si se cruza, eso significa que tenemos que encontrar donde la nave intercepta la costa en primer lugar. Pero si yo siga este método va a través de todos los polígonos, se va a tardar una eternidad. (Tiene alrededor de 62000 polígonos y cada uno de ellos tiene miles de puntos). Algún consejo sobre esto?

Pensé inicialmente dividiendo el mapa del mundo jerárquicos de las áreas (Nivel 1: 10 polígonos; Nivel 2: cada polígono tiene 10 polígonos en el interior). Pero no estoy seguro de cómo dividir el mapa del mundo en los niveles de polígonos necesito. Es la funcionalidad de postgis útil para esto? O cualquier otro bibliotecas para este propósito? Creo que este tipo de funcionalidad deben estar disponibles ya. Pero yo no soy capaz de averiguar hasta ahora.

Función 3 Ya que ahora sabemos de donde el barco intercepta la costa en primer lugar, podemos predecir su ruta a lo largo de la línea de costa mediante el algoritmo de la ruta más corta, dado que conocen el destino de la información. Pero para ello, es necesario dividir el mapa de la costa en las redes por lo que el camino más corto puede ser utilizado. ¿Cómo puede hacer que las cuadrículas base en esto a lo largo de las costas? Yo no estoy haciendo el procesamiento de la imagen aquí. Lo que tengo es este shapefile ahora. O debo ir con algunos de procesamiento de imagen, enfoque y hacer que la red de las costas? Si es así por favor proporcionar algunos enlaces.

1voto

gopi1410 Puntos 151

No quieres costas, quiere tierra polígonos. También, usted necesita la red para toda la zona, no sólo alrededor de la causa de costa no sabes cuando la nave interceptar la tierra (barco que está en el centro del Atlántico y va a la India no sólo navega en línea recta hasta que golpea la tierra, será la cabeza hacia el sur de África (o elegir el camino a través del canal de Suez).

El código más básico que te dará lo que quieres es:

WITH line AS(
            SELECT ST_TRANSFORM(ST_SetSRID(ST_GeomFromText(('LINESTRING(10 -85, 10 85)')),4736),3785) as line
        ),
        lands AS(
            SELECT ST_UNION(geom) AS geom FROM simplified_land_polygons CROSS JOIN line WHERE ST_INTERSECTS(geom,line.line)
        )
        SELECT ST_Difference(line.line,lands.geom) FROM lands LEFT JOIN line ON 1=1;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X