5 votos

encontrar detalles de la ubicación dentro del círculo de búfer

Se preguntaba cómo iba yo a ir sobre conseguir que esto funcione.

Tengo una tabla con los datos de ubicación (lat, long, homevalue) en sql server 2008. Dado un lat long decir (32.113, -81.3225), quiero llamar un radio de 50 millas del círculo y obtener el número de ubicaciones y el total de valor de la vivienda dentro del círculo de búfer.

Gracias vic


Mapoholic,

Gracias por su respuesta. Si lo entiendo correctamente, usted está utilizando la "forma" como un atributo para realizar stintersect y stbuffer en la ubicación de la tabla. Mis limitaciones es que, tengo la ubicación de la tabla que tiene el lat, long, homevalue en dólares. Necesito de forma independiente dibujar un círculo basado en el da lat long, que si estoy haciendo lo correcto sería como este

DECLARE @Resultado geografía SELECT @Resultado = geografía::Punto(32.113, -81.3225,4326); select @Resultado.STBuffer(10000);

y luego tienen que inscribirse o utilizar algún método para comprobar si la lat anhela en la ubicación de la tabla se encuentran dentro de los @Resultado.STBuffer(10000). Alguna idea?

Gracias de nuevo

vic

4voto

Rafael Almeida Puntos 141

STBuffer y STIntersects son las funciones que desea que yo pienso. Este es un ejemplo de obtención de la ubicación de los registros dentro de una 10m de amortiguamiento alrededor del punto:

select * from locations where shape.STIntersects(geography::STPointFromText('POINT(32.113, -81.3225)', 4326).STBuffer(10))=1

Donde 4326 es el SRID (suponiendo que los datos están en WGS84) y 'forma' es el nombre de la columna espacial

1voto

Gx1sptDTDa Puntos 141

Usted puede utilizar un Gran Círculo en el cálculo de la distancia. El uso de km en lugar de millas de uso 6371 en lugar de 3959 a continuación.

declare @lat1 as float, @lon1 as float, @DistanceFilter as float
set @lat1 = 32.113
set @lon1 = -81.3225
set @DistanceFilter = 50
select count(*) count_properties, sum(homevalue) sum_homevalue
from [table]
where ACOS(COS(RADIANS(90-@lat1))*COS(RADIANS(90-latitude)) +SIN(RADIANS(90-@lat1)) *SIN(RADIANS(90-latitude))*COS(RADIANS(@lon1-longitude)))*3959
<= @DistanceFilter

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