
Simular una trayectoria de un objeto en "n" zonas de datos espaciales de tipo geográfico
Publicado por Yhimy Wilberto (1 intervención) el 03/01/2017 00:06:24
Buenas tardes a todos espero que estén bien,a continuación explicaré el problema:
Estoy trabajando con el tema de datos espaciales, con el tipo de dato Geography, lo que quiero es simular un recorrido de automóvil(Objecto) de acuerdo a las rutas(zonas) que se le especifica.
Para esto se creará un procedimiento que recorrerá dichas zonas, la zona son LineString.
> LINESTRING (-12.077006 -76.954076, -12.07928 -76.951608)
> LINESTRING (-12.07928 -76.951608, -12.069812 -76.951807)
Las Zonas con el STBuffer con valor de 1 metro, al momento que que le doy el Buffer el LineString se Transforma en un polígono.
[
El punto de partida del objecto es el punto de inicio de la primera zona que tiene que recorrer, cabe mencionar que el objecto tiene "N" zonas que recorrer.
Al momento que comienzo a plantear el problema yo obtengo el punto de inicio y guardo la longitud y latitud de la primera zona que tiene el Id número 3 y le sumo, cabe mencionar que este valor sumado es sacado a simple vista sin ningún calculo, esto me funciona para la primera zona que tiene que recorrer, también asumo que las rutas serán estáticas por lo que eso esta mal , ya que la suma que se debe realizar a longitud y latitud depende mucho del grado de inclinación (grados o radianes) que tiene la zona dentro del hemisferio.
-- Punto de Partida de objeto de la primera zona
-- Suma de longitud y latitud
Una vez que Ingreso el punto de inicio, cojo la ultima fila ingresada de la tabla SpatailRuteObject para saber en que parte de la zona está aquel objeto y luego le sumo. Código Fuente
En esta imagen hay un ejemplo que refleja lo que deseo lograr, Hay una linea negra que refleja a la recta con el id 3 y la recta roja que refleja con el id:4 Los puntos de localización son los de color azul , que me marca la ruta que debe seguir aquel objecto , pero esa ruta tengo que fijarla yo. Espero que me entiendan sobre lo que les trato transmitir.
Imagen de ejemplo :
codígo fuente :
> Resultados código Sourse :
Estoy trabajando con el tema de datos espaciales, con el tipo de dato Geography, lo que quiero es simular un recorrido de automóvil(Objecto) de acuerdo a las rutas(zonas) que se le especifica.
Para esto se creará un procedimiento que recorrerá dichas zonas, la zona son LineString.
> LINESTRING (-12.077006 -76.954076, -12.07928 -76.951608)
> LINESTRING (-12.07928 -76.951608, -12.069812 -76.951807)
Las Zonas con el STBuffer con valor de 1 metro, al momento que que le doy el Buffer el LineString se Transforma en un polígono.
1
> select GeogCol1.STBuffer(1) from [dbo].[SpatialTable] where id in (3,4)
El punto de partida del objecto es el punto de inicio de la primera zona que tiene que recorrer, cabe mencionar que el objecto tiene "N" zonas que recorrer.
1
> SELECT @PointStart = GeogCol1.STStartPoint() FROM SpatialTable WHERE id = 3
Al momento que comienzo a plantear el problema yo obtengo el punto de inicio y guardo la longitud y latitud de la primera zona que tiene el Id número 3 y le sumo, cabe mencionar que este valor sumado es sacado a simple vista sin ningún calculo, esto me funciona para la primera zona que tiene que recorrer, también asumo que las rutas serán estáticas por lo que eso esta mal , ya que la suma que se debe realizar a longitud y latitud depende mucho del grado de inclinación (grados o radianes) que tiene la zona dentro del hemisferio.
-- Punto de Partida de objeto de la primera zona
1
2
3
> SELECT @PointStart = GeogCol1.STStartPoint() FROM SpatialTable WHERE id = 3
> SET @LatitudPoint = @PointStart.STPointN(1).Lat;
> SET @LongitudPoint = @PointStart.STPointN(1).Long;
-- Suma de longitud y latitud
1
2
3
4
SET @LatitudPoint = @LatitudPoint + 00.00010199995;
SET @LongitudPoint = @LongitudPoint - 00.00009359999999;
print cast( ' LATITUD POINT => :| ' +cast (@LatitudPoint as varchar(15))+ ' LONGITUD POINT => : | '+ cast(@LongitudPoint as varchar(15)) as varchar(100));
INSERT INTO SpatailRuteObject(GeogCol1)values(GEOGRAPHY::STPointFromText('POINT(' + CAST(@LongitudPoint AS VARCHAR(20))+ SPACE(1) + CAST(@LatitudPoint AS VARCHAR(20)) + ')',4326))
Una vez que Ingreso el punto de inicio, cojo la ultima fila ingresada de la tabla SpatailRuteObject para saber en que parte de la zona está aquel objeto y luego le sumo. Código Fuente
En esta imagen hay un ejemplo que refleja lo que deseo lograr, Hay una linea negra que refleja a la recta con el id 3 y la recta roja que refleja con el id:4 Los puntos de localización son los de color azul , que me marca la ruta que debe seguir aquel objecto , pero esa ruta tengo que fijarla yo. Espero que me entiendan sobre lo que les trato transmitir.
Imagen de ejemplo :

codígo fuente :

> Resultados código Sourse :

Valora esta pregunta


0