# [ncl-talk] inverse weighted distance

Dennis Shea shea at ucar.edu
Mon Oct 15 19:44:34 MDT 2018

```I guess I do not understand:

latz  = (/23.285/)
lonz  = (/77.276/)

nlat  = 2
mlon  = 3
lat2d = *random_uniform*( 15, 30, (/nlat,mlon/))
lon2d = *random_uniform*( 50, 90, (/nlat,mlon/))

print(lat2d)
print("====")
print(lon2d)
print("====")

;;  abs(iu) = 1   ; return the distance in radians
;;          = 2   ; return the distance in degrees
;;          = 3   ; return the distance in meters
;;          = 4   ; return the distance in kilometers
iu   = 2
npts = 2        ; beginning and end
gcdist= *gc_latlon*(latz,lonz, lat2d,lon2d, npts,iu)
print(gcdist)
print("====")
; For 'fun' ; Pythagorean theorem
; Not for sphere but ... crude approx for
small distances
dlat = *abs*(lat2d - latz)
dlon = *abs*(lon2d - lonz)
dist = *sqrt*(dlat^2 + dlon^2)

print(latz+"  "+lonz+"  "+lat2d+"  "+lon2d+" : "+*gcdist*+" : "+dist)

=======
[snip]

*Variable: gcdistType: floatTotal Size: 24 bytes            6 valuesNumber
of Dimensions: 2Dimensions and sizes:    [2] x [3]Coordinates: Number Of
Attributes: 4  units :    degrees  gclon :    <ARRAY of 12 elements>  gclat
:    <ARRAY of 12 elements>  spacing :    ( 5.50189, 6.191937, 13.16254,
13.33037, 8.464802, 14.25519 )(0,0)    5.50189(0,1)    6.191937(0,2)
13.16254(1,0)    13.33037(1,1)    8.464802(1,2)    14.25519(0)
====(0,0)    23.285  77.276  19.8557  72.6484 : 5.50189 : 5.75974(0,1)
23.285  77.276  19.8659  82.8288 : 6.19194 : 6.52104(0,2)    23.285
77.276  22.4008  63.0198 : 13.1625 : 14.2836(1,0)    23.285  77.276
19.3309  63.6032 : 13.3304 : 14.2331(1,1)    23.285  77.276  20.2951
85.8071 : 8.4648 : 9.03983(1,2)    23.285  77.276  17.3094  63.464 :
14.2552 : 15.0492*

On Mon, Oct 15, 2018 at 3:34 AM Kunal Bali <kunal.bali9 at gmail.com> wrote:

> Dear Dennis Sir,
> Thanks for the information. I have some query regarding the gc_latlon
> function/
>
> This functions says "*Finds the great circle distance (true surface
> distance) between two points on the globe and interpolates points along the
> great circle*"
>
> But my CoD output was in a rectangular box. So will this function be
> useful for my rectangular box. and also I don't want to interpolate the
> points along the rectangular box. I want to calculate the distance of the
> given actual points/coordinates.
>
> However, I am not getting the desired output from here,
> I used
>
>     dist = gc_latlon(latz,lonz,latv,lonv,2,4)
>     print(dist)
>
> But it's not giving the value at every dimension size
> e.g. Dimensions and sizes: [641] x [641]
> So I need the distance at this dimension size as well.
>
> ALSO used,
>
>    gcdist = gc_latlon(latz,lonz, latv,lonv, npts,2)
>
>   print (gcdist)
>   print (gcdist at gclat+"  "+gcdist at gclon )  ; print the lats/lons
>
>
>
> ---
> Kunal Bali
>
>
>
>
>
>
> On Mon, Oct 15, 2018 at 5:06 AM Dennis Shea <shea at ucar.edu> wrote:
>
>> Distance:
>> *http://www.ncl.ucar.edu/Document/Functions/Built-in/gc_latlon.shtml*
>> <http://www.ncl.ucar.edu/Document/Functions/Built-in/gc_latlon.shtml>
>>
>> On Sat, Oct 13, 2018 at 1:19 AM Kunal Bali <kunal.bali9 at gmail.com> wrote:
>>
>>> Dear NCL users,
>>>
>>> I need to calculate the inverse weighted distance according to the
>>> attached figure
>>>
>>> The formula is
>>> *xAvg = SUM[X/w]/SUM[1/w]*.  equation (1)
>>>
>>> So first I need to calculate the distance from surrounding grid cells to
>>> the receptor cell
>>>
>>> receptor cell coordinates
>>>   latz = (/23.285/)
>>>   lonz = (/77.276/)
>>>
>>> I don't know how to calculate this distance from single receptor site to
>>> its surroundings grid cells. Surrounding grid cells spread ~500 km.
>>>
>>>
>>> I have calculated the *X* here (which is a coefficient of divergence)
>>>
>>> and the coefficient of divergence is calculated as
>>>  ;-----calculation of the coefficient of divergence
>>>    DATA_SINGLE_3D = conform(data_subset, data_single, 0)
>>>    x1 = (DATA_SINGLE_3D - data_subset)
>>>    x2 = (DATA_SINGLE_3D + data_subset)
>>>    CoD1   = (x1/where(x2.ne.0,x2,x2 at _FillValue))^2
>>>
>>>    CoD2 = dim_avg_n_Wrap(CoD1, 0)    ; (nlat,mlon)
>>>    CoD_final = sqrt(CoD2)
>>>
>>>
>>>
>>>
>>> So please provide some information on that. I have attached the script
>>> here.
>>>
>>> regards
>>> ---
>>> Kunal Bali
>>>
>>>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181015/696a2531/attachment.html>
```