Kom ihåg mig?
Home Menu

Menu


Räkna ut avstånd mellan 2 adresser

 
Ämnesverktyg Visningsalternativ
Oläst 2012-08-09, 13:43 #1
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Standard Räkna ut avstånd mellan 2 adresser

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
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-09, 13:45 #2
zenda zenda är inte uppkopplad
Medlem
 
Reg.datum: Aug 2008
Inlägg: 297
zenda zenda är inte uppkopplad
Medlem
 
Reg.datum: Aug 2008
Inlägg: 297
Om du får fram koordinaterna så kan du använda en formel för att få fram avståndet.
zenda är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-09, 15:13 #3
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Mjo zenda det har jag läst, men skulle behöva köravståndet mellan 2 adresser.
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-09, 15:54 #4
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
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 15:56
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-10, 06:20 #5
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
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 06:24
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-10, 06:34 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
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 06:39
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-10, 08:26 #7
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
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.
Det är det senare som efterfrågas. Att beräkna avstånd fågelvägen är ju som sagt var inga problem.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-10, 16:14 #8
elitassons avatar
elitasson elitasson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2007
Inlägg: 812
elitasson elitasson är inte uppkopplad
Mycket flitig postare
elitassons avatar
 
Reg.datum: Aug 2007
Inlägg: 812
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 16:22
elitasson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-12, 18:11 #9
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Citat:
Ursprungligen postat av elitasson Visa inlägg
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?
Lite luddigt, men folk har pekat på denna punkt:
Citat:

(g) No Use of Content without a Google Map. You must not use or display the Content without a corresponding Google map, unless you are explicitly permitted to do so in the Maps APIs Documentation, or through written permission from Google. In any event, you must not use or display the Content on or in conjunction with a non-Google map. For example, you must not use geocodes obtained through the Service in conjunction with a non-Google map. As another example, you must not display Street View imagery alongside a non-Google map, but you may display Street View imagery without a corresponding Google map because the Maps APIs Documentation explicitly permits you to do so.
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-12, 19:13 #10
Erik Stenman Erik Stenman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2007
Inlägg: 2 154
Erik Stenman Erik Stenman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2007
Inlägg: 2 154
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.
Erik Stenman är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:09.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017