Re: [OSM-talk-nl] [algorithme gezocht]
Gert Gremmen wrote: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? De measurement plugin van JOSM kan wellicht van dienst zijn (de code ervan bedoel ik)? http://files.raphael-mack.de/josm/measurement.jar ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 Martijn van Exel schreef: Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: Dan compenseer je toch niet voor de ronding van de aarde? Daar moet toch minimaal nog een sin/cos component (of exp) inzitten? Natuurlijk voor Nederland boeit het niet. Stefan -BEGIN PGP SIGNATURE- Version: GnuPG v2.0.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHHIuOYH1+F2Rqwn0RCu2mAJ9jjvvZjlT3swxQiaOKeTm+4fC1mACeM40C qd2QOG6iv9/kEPMYE+O7PnI= =X40T -END PGP SIGNATURE- ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Volgens mij heet de formule great circle distance (zoals c# voorbeeld). Zie http://en.wikipedia.org/wiki/Great-circle_distance Pythagoras kan m.i. alleen met zgn equidistante projectie (bijv. pixels evenredig aan meters in x en y richting) zoals RD op bijv. topokaarten in NL. Ik heb wel een aantal implementaties bijv. in Java of JavaScript. Just Martijn van Exel wrote: Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl -- --Just Just van den Broecke [EMAIL PROTECTED] Just Objects B.V. tel +31 65 4268627 Skype: justb4 The Netherlands http://www.justobjects.nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Voor afstandberekening in het RD-stelsel kun je volgens mij inderdaad veilig pythagoras gebruiken, omdat het een km2-grid is met vaste afstand tussen de gridlijnen en rechte hoeken. Maar als je cartesische coördinaten hebt (zoals Gert heeft) zou je die eerst moeten omrekenen naar RD en dan krijg je ook met dergelijke trigonometrie te maken. Martijn Op 22-okt-2007, om 20:40 heeft Just van den Broecke het volgende geschreven: Volgens mij heet de formule great circle distance (zoals c# voorbeeld). Zie http://en.wikipedia.org/wiki/Great-circle_distance Pythagoras kan m.i. alleen met zgn equidistante projectie (bijv. pixels evenredig aan meters in x en y richting) zoals RD op bijv. topokaarten in NL. Ik heb wel een aantal implementaties bijv. in Java of JavaScript. Just Martijn van Exel wrote: Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl - --- ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl -- --Just Just van den Broecke [EMAIL PROTECTED] Just Objects B.V. tel +31 65 4268627 Skype: justb4 The Netherlands http://www.justobjects.nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Martijn van Exel schreef: Voor afstandberekening in het RD-stelsel kun je volgens mij inderdaad veilig pythagoras gebruiken, omdat het een km2-grid is met vaste afstand tussen de gridlijnen en rechte hoeken. Maar als je cartesische coördinaten hebt (zoals Gert heeft) zou je die eerst moeten omrekenen naar RD en dan krijg je ook met dergelijke trigonometrie te maken. Dit is niet helemaal juist, cartesisch betekent namelijk plat. Gert zijn coordinaten kunnen dus ook gebruik maken van dezelfde stelling van pythagoras. Feitelijk zijn er 2 soorten coordinaatstelsels op GIS gebied: 1) Geografische coordinaat systemen en 2) geprojecteerde coordinaat systemen. In een coordinaat systeem uit 1) geldt dat trigonometrie of great circle berekeningen dienen te worden toegepast. Bij 2) kun je altijd volstaan met de stelling van pythagoras, maar afhankelijk van de projectie zullen er afwijkingen optreden in afstand of in oppervlakte. Er zijn namelijk zogenaamde Equal Area (Oppervlakte getrouw) en Equidistant (Afstands getrouw) projecties en mengvormen van deze twee. Vliegroute kaarten zijn b.v. equidistant omdat afstand hier belangrijker is dan oppervlakte. Thematische vlakken kaarten zijn vaak oppervlakte getrouw. Tevens is het gebied waarvoor de projectie specifiek is ingericht essentieel. In Nederland snijdt de projectie bijvoorbeeld door de aarde in een specifieke straal rondom Amersfoort. Dit betekent dat je vlak bij Amersfoort een negatieve afwijking hebt, (in Zeeland en Groningen een positieve) van enkele centimeters. Op de snijring is de afwijking het kleinste. Indien de afstandsberekening bedoeld is voor b.v. routeplanning zou ik daarom adviseren om de extra moeite te nemen om de great circle berekening door te voeren. Deze is dan automatische bij benadering gelijk aan de GPS afstand. (Pfff, 't zat diep weg in de uithoeken van mijn RAM, maar als HTS Geo-Informaticus/Geodeet moest ik hier even op reageren) Martijn Op 22-okt-2007, om 20:40 heeft Just van den Broecke het volgende geschreven: Volgens mij heet de formule great circle distance (zoals c# voorbeeld). Zie http://en.wikipedia.org/wiki/Great-circle_distance Pythagoras kan m.i. alleen met zgn equidistante projectie (bijv. pixels evenredig aan meters in x en y richting) zoals RD op bijv. topokaarten in NL. Ik heb wel een aantal implementaties bijv. in Java of JavaScript. Just Martijn van Exel wrote: Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl - --- ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl -- --Just Just van den Broecke [EMAIL PROTECTED] Just Objects B.V. tel +31 65 4268627 Skype: justb4 The Netherlands http://www.justobjects.nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Ik ben blij dat er iemand is die het wel echt weet; na het posten van dit bericht begon ik te twijfelen aan mijn formulering en ben sindsdien aan het graven in geheugen en bronnen, maar mijn intellectuele vermogens lijken een bermudadriehoek te hebben waar het gaat om projecties en coördinaatsystemen... Sorry voor de verwarring! Martijn Op 22-okt-2007, om 22:03 heeft Milo van der Linden het volgende geschreven: Martijn van Exel schreef: Voor afstandberekening in het RD-stelsel kun je volgens mij inderdaad veilig pythagoras gebruiken, omdat het een km2-grid is met vaste afstand tussen de gridlijnen en rechte hoeken. Maar als je cartesische coördinaten hebt (zoals Gert heeft) zou je die eerst moeten omrekenen naar RD en dan krijg je ook met dergelijke trigonometrie te maken. Dit is niet helemaal juist, cartesisch betekent namelijk plat. Gert zijn coordinaten kunnen dus ook gebruik maken van dezelfde stelling van pythagoras. Feitelijk zijn er 2 soorten coordinaatstelsels op GIS gebied: 1) Geografische coordinaat systemen en 2) geprojecteerde coordinaat systemen. In een coordinaat systeem uit 1) geldt dat trigonometrie of great circle berekeningen dienen te worden toegepast. Bij 2) kun je altijd volstaan met de stelling van pythagoras, maar afhankelijk van de projectie zullen er afwijkingen optreden in afstand of in oppervlakte. Er zijn namelijk zogenaamde Equal Area (Oppervlakte getrouw) en Equidistant (Afstands getrouw) projecties en mengvormen van deze twee. Vliegroute kaarten zijn b.v. equidistant omdat afstand hier belangrijker is dan oppervlakte. Thematische vlakken kaarten zijn vaak oppervlakte getrouw. Tevens is het gebied waarvoor de projectie specifiek is ingericht essentieel. In Nederland snijdt de projectie bijvoorbeeld door de aarde in een specifieke straal rondom Amersfoort. Dit betekent dat je vlak bij Amersfoort een negatieve afwijking hebt, (in Zeeland en Groningen een positieve) van enkele centimeters. Op de snijring is de afwijking het kleinste. Indien de afstandsberekening bedoeld is voor b.v. routeplanning zou ik daarom adviseren om de extra moeite te nemen om de great circle berekening door te voeren. Deze is dan automatische bij benadering gelijk aan de GPS afstand. (Pfff, 't zat diep weg in de uithoeken van mijn RAM, maar als HTS Geo-Informaticus/Geodeet moest ik hier even op reageren) Martijn Op 22-okt-2007, om 20:40 heeft Just van den Broecke het volgende geschreven: Volgens mij heet de formule great circle distance (zoals c# voorbeeld). Zie http://en.wikipedia.org/wiki/Great-circle_distance Pythagoras kan m.i. alleen met zgn equidistante projectie (bijv. pixels evenredig aan meters in x en y richting) zoals RD op bijv. topokaarten in NL. Ik heb wel een aantal implementaties bijv. in Java of JavaScript. Just Martijn van Exel wrote: Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl --- -- --- ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl -- --Just Just van den Broecke [EMAIL PROTECTED] Just Objects B.V. tel +31 65
Re: [OSM-talk-nl] [algorithme gezocht]
Mijn coordinaten stelsel is Natuurlijk dat van OSM Graden minuten en seconden, of de decimale versie daarvan Op de aangegeven link van martijn vindt je Nog veel meer op http://mathforum.org/library/drmath/view/51879.html Gert Van: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Namens Martijn van Exel Verzonden: maandag 22 oktober 2007 22:26 Aan: [EMAIL PROTECTED]; OpenStreetMap NL discussion list Onderwerp: Re: [OSM-talk-nl] [algorithme gezocht] Ik ben blij dat er iemand is die het wel echt weet; na het posten van dit bericht begon ik te twijfelen aan mijn formulering en ben sindsdien aan het graven in geheugen en bronnen, maar mijn intellectuele vermogens lijken een bermudadriehoek te hebben waar het gaat om projecties en coördinaatsystemen... Sorry voor de verwarring! Martijn Op 22-okt-2007, om 22:03 heeft Milo van der Linden het volgende geschreven: Martijn van Exel schreef: Voor afstandberekening in het RD-stelsel kun je volgens mij inderdaad veilig pythagoras gebruiken, omdat het een km2-grid is met vaste afstand tussen de gridlijnen en rechte hoeken. Maar als je cartesische coördinaten hebt (zoals Gert heeft) zou je die eerst moeten omrekenen naar RD en dan krijg je ook met dergelijke trigonometrie te maken. Dit is niet helemaal juist, cartesisch betekent namelijk plat. Gert zijn coordinaten kunnen dus ook gebruik maken van dezelfde stelling van pythagoras. Feitelijk zijn er 2 soorten coordinaatstelsels op GIS gebied: 1) Geografische coordinaat systemen en 2) geprojecteerde coordinaat systemen. In een coordinaat systeem uit 1) geldt dat trigonometrie of great circle berekeningen dienen te worden toegepast. Bij 2) kun je altijd volstaan met de stelling van pythagoras, maar afhankelijk van de projectie zullen er afwijkingen optreden in afstand of in oppervlakte. Er zijn namelijk zogenaamde Equal Area (Oppervlakte getrouw) en Equidistant (Afstands getrouw) projecties en mengvormen van deze twee. Vliegroute kaarten zijn b.v. equidistant omdat afstand hier belangrijker is dan oppervlakte. Thematische vlakken kaarten zijn vaak oppervlakte getrouw. Tevens is het gebied waarvoor de projectie specifiek is ingericht essentieel. In Nederland snijdt de projectie bijvoorbeeld door de aarde in een specifieke straal rondom Amersfoort. Dit betekent dat je vlak bij Amersfoort een negatieve afwijking hebt, (in Zeeland en Groningen een positieve) van enkele centimeters. Op de snijring is de afwijking het kleinste. Indien de afstandsberekening bedoeld is voor b.v. routeplanning zou ik daarom adviseren om de extra moeite te nemen om de great circle berekening door te voeren. Deze is dan automatische bij benadering gelijk aan de GPS afstand. (Pfff, 't zat diep weg in de uithoeken van mijn RAM, maar als HTS Geo-Informaticus/Geodeet moest ik hier even op reageren) Martijn Op 22-okt-2007, om 20:40 heeft Just van den Broecke het volgende geschreven: Volgens mij heet de formule great circle distance (zoals c# voorbeeld). Zie http://en.wikipedia.org/wiki/Great-circle_distance Pythagoras kan m.i. alleen met zgn equidistante projectie (bijv. pixels evenredig aan meters in x en y richting) zoals RD op bijv. topokaarten in NL. Ik heb wel een aantal implementaties bijv. in Java of JavaScript. Just Martijn van Exel wrote: Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor
Re: [OSM-talk-nl] [algorithme gezocht]
't zal nog wel even duren voor je zo verward bent als ik :-) ik vergeet namelijk zelfs mijn eigen verjaardag... Excuses zijn niet nodig, dit is een open discussie, vragen is nooit stom en stomme dingen zeggen is niet mogelijk! Martijn van Exel schreef: Ik ben blij dat er iemand is die het wel echt weet; na het posten van dit bericht begon ik te twijfelen aan mijn formulering en ben sindsdien aan het graven in geheugen en bronnen, maar mijn intellectuele vermogens lijken een bermudadriehoek te hebben waar het gaat om projecties en coördinaatsystemen... Sorry voor de verwarring! Martijn Op 22-okt-2007, om 22:03 heeft Milo van der Linden het volgende geschreven: Martijn van Exel schreef: Voor afstandberekening in het RD-stelsel kun je volgens mij inderdaad veilig pythagoras gebruiken, omdat het een km2-grid is met vaste afstand tussen de gridlijnen en rechte hoeken. Maar als je cartesische coördinaten hebt (zoals Gert heeft) zou je die eerst moeten omrekenen naar RD en dan krijg je ook met dergelijke trigonometrie te maken. Dit is niet helemaal juist, cartesisch betekent namelijk plat. Gert zijn coordinaten kunnen dus ook gebruik maken van dezelfde stelling van pythagoras. Feitelijk zijn er 2 soorten coordinaatstelsels op GIS gebied: 1) Geografische coordinaat systemen en 2) geprojecteerde coordinaat systemen. In een coordinaat systeem uit 1) geldt dat trigonometrie of great circle berekeningen dienen te worden toegepast. Bij 2) kun je altijd volstaan met de stelling van pythagoras, maar afhankelijk van de projectie zullen er afwijkingen optreden in afstand of in oppervlakte. Er zijn namelijk zogenaamde Equal Area (Oppervlakte getrouw) en Equidistant (Afstands getrouw) projecties en mengvormen van deze twee. Vliegroute kaarten zijn b.v. equidistant omdat afstand hier belangrijker is dan oppervlakte. Thematische vlakken kaarten zijn vaak oppervlakte getrouw. Tevens is het gebied waarvoor de projectie specifiek is ingericht essentieel. In Nederland snijdt de projectie bijvoorbeeld door de aarde in een specifieke straal rondom Amersfoort. Dit betekent dat je vlak bij Amersfoort een negatieve afwijking hebt, (in Zeeland en Groningen een positieve) van enkele centimeters. Op de snijring is de afwijking het kleinste. Indien de afstandsberekening bedoeld is voor b.v. routeplanning zou ik daarom adviseren om de extra moeite te nemen om de great circle berekening door te voeren. Deze is dan automatische bij benadering gelijk aan de GPS afstand. (Pfff, 't zat diep weg in de uithoeken van mijn RAM, maar als HTS Geo-Informaticus/Geodeet moest ik hier even op reageren) Martijn Op 22-okt-2007, om 20:40 heeft Just van den Broecke het volgende geschreven: Volgens mij heet de formule great circle distance (zoals c# voorbeeld). Zie http://en.wikipedia.org/wiki/Great-circle_distance Pythagoras kan m.i. alleen met zgn equidistante projectie (bijv. pixels evenredig aan meters in x en y richting) zoals RD op bijv. topokaarten in NL. Ik heb wel een aantal implementaties bijv. in Java of JavaScript. Just Martijn van Exel wrote: Dat maakt het een stuk complexer. Je moet je afvragen of je dat ervoor over hebt, maar enfin, ik vind de volgende uitwerking: http://www.codeproject.com/csharp/distancebetweenlocations.asp Succes ermee; Martijn Op 22-okt-2007, om 13:29 heeft Gert Gremmen het volgende geschreven: Dank je Martijn, maar nu in lengte en breedte graden en over de aardbol, hoewel dat binnen Nederland wel ongeveer hetzelfde is als op een plat vlak. Regards, Je bedoelt de hemelsbrede afstand? Dat is de implementatie van Pythagoras: (in c#) public double Distance(Point pt1, Point pt2) { return Math.Sqrt(Math.Pow(pt2.X.ToDouble() - pt1.X.ToDouble(), 2) + Math.Pow(pt2.Y.ToDouble() - pt1.Y.ToDouble(), 2)); } Voor afstand over de weg kun je een webservice aanroepen, er zijn verschillende partijen die dat aanbieden (Locatienet, Geodan, ...) Martijn Op 22-okt-2007, om 13:04 heeft Gert Gremmen het volgende geschreven: Voor het schrijven van een eenvoudige applicatie zoek ik een algorithme om de afstand tussen twee coordinaten ( uit OSM natuurlijk) te berekenen. (in Nederland) Het hoeft niet sub-meter nauwkeurig Wie heeft een voorbeeld in universele code? Regards, Gert Gremmen ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org mailto:Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] [algorithme gezocht]
Milo van der Linden schreef: Indien de afstandsberekening bedoeld is voor b.v. routeplanning zou ik daarom adviseren om de extra moeite te nemen om de great circle berekening door te voeren. Deze is dan automatische bij benadering gelijk aan de GPS afstand. Ik ben het hier niet mee eens. De meeste grote-cirkel berekeningen gaan uit van een bolvormige aarde. Helaas is de aarde behoorlijk sterk vervormd. Ik vermoed dat (zolang je binnen Nederland blijft) de afwijking in de uitkomst van een gc-berekening t.g.v. de afplatting van de aarde groter is dan de afwijking in een platte-geometrieberekening na een conversie naar RD-coordinaten. Maar voor de meeste toepassingen is zo'n nauwkeurige berekening niet zo belangrijk. Voor routeplanning is het bv. niet van belang of de kortste route tussen Middelburg en Groningen 212.4 of 212.6 km is; het onderlinge verschil tussen twee routes is belangrijker, maar in alle routes tellen de nauwkeurigheden ongeveer even zwaar. Gebruik voor een eerste benadering gewoon: afstand = 111 * sqrt( (lat1-lat2)^2 + 0.38 * (lon1-lon2)^2 ) Dat gaat het snelst. Eugene ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl