FAQ |
Kalender |
|
2012-08-09, 14:43 | #1 | ||
|
|||
Medlem
|
Hejsan,
Finns det något API där man kan räkna ut ett köravstånd i km baserat på 2 adresser? Hörde att google har det, men man får endast använda det om man använder det i samband med deras kartor, jag vill endast ha ut ett värde i kilometer från 2 adresser. Någon som gjort något liknande? Mvh |
||
Svara med citat |
2012-08-09, 14:45 | #2 | ||
|
|||
Medlem
|
Om du får fram koordinaterna så kan du använda en formel för att få fram avståndet.
|
||
Svara med citat |
2012-08-09, 16:13 | #3 | ||
|
|||
Medlem
|
Mjo zenda det har jag läst, men skulle behöva köravståndet mellan 2 adresser.
|
||
Svara med citat |
2012-08-09, 16:54 | #4 | ||
|
|||
Supermoderator
|
Det är mycket data som behövs för en sådan tjänst. Att samla in denna kostar en hel del tid / pengar, därav att du inte får använda de tjänster som finns hur du vill. Ett enklare alternativ är att du jämför kördistans / fågelvägen och tar fram koefficienter som du kan använda dig utav. Sen får du antagligen dela upp landet i delar, ta hänsyn till större sjöar osv. Det är som du kanske förstår inte helt enkelt
__________________
Full-stack developer, free for smaller assignments Senast redigerad av tartareandesire den 2012-08-09 klockan 16:56 |
||
Svara med citat |
2012-08-10, 07:20 | #5 | ||
|
|||
Klarade millennium-buggen
|
Det finns matematiska formler för det, men det krävs att man anger GPS-koordinater, enligt exempelvis enligt formatet WGS 84 (http://sv.wikipedia.org/wiki/World_Geodetic_System_1984).
Om du söker på Google så finns det formler i SQL som beräknar avståndet hyfsat aproximativt med koordinater (jag har testat i SQL-Server och det funkar bra). Det finns ju även kartsystem som mäter avstånd efter vägasvtåndet, som Eniro.se och hitta.se, de bygger sin information på Vägverkets kartsystem över vägarna. Senast redigerad av Conny Westh den 2012-08-10 klockan 07:24 |
||
Svara med citat |
2012-08-10, 09:26 | #6 | ||
|
|||
Supermoderator
|
Citat:
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2012-08-10, 07:34 | #7 | ||
|
|||
Klarade millennium-buggen
|
se på sjutton vi har tydligen diskuterat det på WN tidigare så jag hade lite testkod i min WNtest-databas:
Kod:
CREATE TABLE [dbo].[geographic] ( [GEOGRAPHIC_ID] [int] NOT NULL, [LONG] [float] NOT NULL, [LAT] [float] NOT NULL, [location_geography] [geography] NULL ) Kod:
CREATE PROCEDURE [dbo].[CreateRandomPositions] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @start INT DECLARE @stop INT DECLARE @count INT DECLARE @seed float SET @count = 0 SET @start = 1 SET @seed = RAND( (DATEPART(mm, GETDATE()) * 100000 ) + (DATEPART(ss, GETDATE()) * 1000 ) + DATEPART(ms, GETDATE()) ); set @stop=@start+400000 WHILE (@count <= @stop) BEGIN INSERT INTO [dbo].[geographic] ([GEOGRAPHIC_ID],[LONG], [LAT]) VALUES ((SELECT ISnull(MAX([GEOGRAPHIC_ID]),1) as c from geographic)+1,RAND()*180.0-90.0, RAND()*180.0-90.0) set @count = @count + 1 END END Kod:
CREATE PROCEDURE [dbo].[spGetNearLocations] @latitude decimal(18,14), @longtitude decimal(18,14), @pDist Float AS BEGIN SET NOCOUNT ON; -- @p1 is the point you want to calculate the distance from which is passed as parameters declare @p1 geography = geography::Point(@latitude,@longtitude, 4326); SELECT * FROM ( SELECT * ,@p1.STDistance(geography::Point([LAT], [LONG], 4326)) as [DistanceInKilometers] FROM [geographic] ) as geo WHERE [DistanceInKilometers] < @pDist END GO Kod:
CREATE PROCEDURE [dbo].[TestDistance] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; declare @stop Datetime declare @start Datetime set @start = GetDate() EXEC GetDist -84.093177, 35.922934, 8.2; set @stop = GetDate() SELECT DateDiff(ms,@start,@stop) AS PerformanceTime set @start = GetDate() EXEC TestLatLonRadiusDistanceCalculation -84.093177, 35.922934, 8.2; set @stop = GetDate() SELECT DateDiff(ms,@start,@stop) AS PerformanceTime set @start = GetDate() EXEC [dbo].[spGetNearLocations] -84.093177, 35.922934, 8.2; set @stop = GetDate() SELECT DateDiff(ms,@start,@stop) AS PerformanceTime END Kod:
CREATE PROCEDURE [dbo].[TestLatLonRadiusDistanceCalculation] -- Add the parameters for the stored procedure here @pLong float, @pLat float, @pDist float AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT * FROM ( select *, dbo.LatLonRadiusDistance(long,lat,@pLong,@pLat) as distance FROM geographic --WHERE (LAT < (@x+1)) AND (LAT >(@x-1)) AND (LONG <(@y+1)) AND (LONG > (@y-1)) ) as dist WHERE distance < @pDist ORDER By distance END Senast redigerad av Conny Westh den 2012-08-10 klockan 07:39 |
||
Svara med citat |
2012-08-10, 17:14 | #8 | |||
|
||||
Mycket flitig postare
|
Har php-funktioner för att enkelt räkna ut kör-avstånd (km) och kör-tid mellan två adresser om det skulle vara intressant.
Dock använder sig funktionerna av Google. EDIT: Var i APIt står det att man bara får använda tjänsterna i samband med deras karttjänster? Senast redigerad av elitasson den 2012-08-10 klockan 17:22 |
|||
Svara med citat |
2012-08-12, 19:11 | #9 | ||
|
|||
Medlem
|
Citat:
Citat:
|
||
Svara med citat |
2012-08-12, 20:13 | #10 | ||
|
|||
Klarade millennium-buggen
|
Väldigt ofta går det att lägga in en google-karta som på något sätt lägger till ett mervärde så försök komma på en användning för en karta så är det lugnt att använda köravståndet via googles api.
|
||
Svara med citat |
Svara |
Ämnesverktyg | |
Visningsalternativ | |
|
|