« Haversine (exp) » : différence entre les versions

De Wiki1000
Aucun résumé des modifications
Aucun résumé des modifications
 
(8 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Version700}}
<source lang='delphi'>function haversine(geoloc:TGeolocation; lat,long:Double):Double;</source>
<source lang='delphi'>function haversine(geoloc:TGeolocation; lat,long:Double):Double;</source>


Retourne la distance entre l'attribut Geolocation et un jeu de coordonnées.
Retourne la distance entre l'attribut [[Geolocation (type)|Geolocation]] et un jeu de coordonnées.


Exemple :
Exemple :
Ligne 15 : Ligne 16 :
   lat := 38.897147;
   lat := 38.897147;
   long := -77.043934;
   long := -77.043934;
   sel := WFAddress.CreateSelector('haversine(geoloc,%2,%3) < %1','',true,[0.1,lat,long]);
   sel := WFAddress.CreateSelector('haversine(geoloc,%2,%3) < %1','-haversine(geoloc,%2,%3)',true,[0.1,lat,long]);


   foreach inst in  sel.AsCursor do
   foreach inst in  sel.AsCursor do
Ligne 42 : Ligne 43 :
end;
end;
</source>
</source>
'''Requête SQL générée par ces exemple:'''
<pre>
select t0.* from dbo.WFADDRESS t0
where dbo.udf_haversine(t0.Geoloc_lat,t0.Geoloc_long,38.897147,-77.043934) < 1.000000000000000060E-001
order by t0.oid
</pre>


Voir aussi:
Voir aussi:
Ligne 48 : Ligne 57 :
{{Footer|Expressions objets (code)}}
{{Footer|Expressions objets (code)}}
[[Category:Expressions]]
[[Category:Expressions]]
[[Category:TGeolocation]]
[[Category:Version700]]

Dernière version du 13 janvier 2015 à 09:49

{{#images:version700-32x32.png|stock}} <source lang='delphi'>function haversine(geoloc:TGeolocation; lat,long:Double):Double;</source>

Retourne la distance entre l'attribut Geolocation et un jeu de coordonnées.

Exemple :

Utilisation d'arguments

<source lang="delphi"> //Procedure TestGeolocation; var sel:TSelector; S:string; stag:string; inst:WFAddress; dd:double; lat,long:double; begin

 // looks for address in 100 meters range from a point.
 //
 lat := 38.897147;
 long := -77.043934;
 sel := WFAddress.CreateSelector('haversine(geoloc,%2,%3) < %1','-haversine(geoloc,%2,%3)',true,[0.1,lat,long]);
 foreach inst in  sel.AsCursor do
  begin
    dd := inst.Geoloc.haversine(38.897147,-77.043934);
    showMessage(Format('%s %0.4f',[inst.Address1,dd]));
  end;

end; </source>

Utilisation de constantes

<source lang="delphi"> //Procedure TestGeolocation; var sel:TSelector; S:string; stag:string; inst:WFAddress; dd:double; begin

 // looks for address in 100 meters range from a point.
 //
 sel := WFAddress.CreateSelector('haversine(geoloc,38.897147,-77.043934) < %1',,true,[0.1]);
 foreach inst in  sel.AsCursor do
  begin
    dd := inst.Geoloc.haversine(38.897147,-77.043934);
    showMessage(Format('%s %0.4f',[inst.Address1,dd]));
  end;

end; </source>

Requête SQL générée par ces exemple:

select t0.* from dbo.WFADDRESS t0
where dbo.udf_haversine(t0.Geoloc_lat,t0.Geoloc_long,38.897147,-77.043934) < 1.000000000000000060E-001
order by t0.oid

Voir aussi:


{{#if:Expressions objets (code)|

{{#if:Expressions objets (code)|— Expressions objets (code) |}} — Développement DSM

|

{{#if:|— [[{{{1}}}]] |}} — Développement DSM

}}