HaversineBox (rtl)

De Wiki1000
(Différences entre les versions)
(Page créée avec « {{latest}} <source lang='delphi'>procedure haversineBox(lat,long,distance:Double; var latmin,latmax,longmin,longmax:double);</source> Cette fonction calcule la boite engl... »)
 
Ligne 28 : Ligne 28 :
 
   longmax := long+dd;
 
   longmax := long+dd;
 
end;
 
end;
 +
</source>
  
 +
<source lang='delphi'>
 +
var latmin,latmax,longmin,longmax:double;
 +
begin
 +
  haversineBox(38.897147,-77.043934,0.5,latmin,latmax,longmin,longmax);
 +
  showMessage(Format('latmin:%0.4f latmax:%0.4f longmin:%0.4f longmax:%0.4f',[latmin,latmax,longmin,longmax]));
 +
end;
 
</source>
 
</source>
  

Version du 24 décembre 2013 à 10:20

versionlatest-32x32.png

procedure haversineBox(lat,long,distance:Double; var latmin,latmax,longmin,longmax:double);

Cette fonction calcule la boite englobante d'une position de taille exprimée en kilomètre.

lat,long Le jeu de coordonné au centre de la boite
latmin,latmax,longmin,longmax Les coordonnées min et max de la boite.

Pseudo code :

const cEarthRadiusKM = 6371.0009;
 
procedure haversineBox(lat,long,distance:Double; var latmin,latmax,longmin,longmax:Double; E:double=cEarthRadiusKM);
var dd:Double;
begin
  dd  := RadToDeg(distance/E);
  latmin := lat-dd;
  latmax := lat+dd;
  dd  := RadToDeg(distance/E/cos(degTorad(lat)));
  longmin := long-dd;
  longmax := long+dd;
end;
var latmin,latmax,longmin,longmax:double;
begin
  haversineBox(38.897147,-77.043934,0.5,latmin,latmax,longmin,longmax);
  showMessage(Format('latmin:%0.4f latmax:%0.4f longmin:%0.4f longmax:%0.4f',[latmin,latmax,longmin,longmax]));
end;

Voir aussi:

Développement DSMDéveloppement DSM

Outils personnels