[ncl-talk] convert polyline shapefile to netcdf via ncl_convert2nc

Lyndz olagueralyndonmark429 at gmail.com
Mon Apr 9 20:03:52 MDT 2018


Hi Sir Dennis and Sir Dave,

Thank you for this. The code is actually doing what is was intended to do:
counting the occurrence frequency of lat-lon points within a grid box.

However, I only wanted to count the "unique" lat-lon points in each grid
box. Each lat-lon points in the csv file has a corresponding "SN" value (SN
column).
If the lat-lon points, in each grid box, have the same "SN" value, then it
should only be counted once.

I'm not sure how to implement this in the code.

Sincerely,

Lyndz



On Tue, Apr 10, 2018 at 10:58 AM, Dennis Shea <shea at ucar.edu> wrote:

> I'll take Dave's example a bit further.
>
> Given that count, valavg and freq have coordinate variables. [Please read.]
>
> Variable: count
> Number of Dimensions: 2
> Dimensions and sizes:    [lat | 11] x [lon | 19]
> Coordinates:
>             lat: [ 0..50]
>             lon: [90..180]
> Number Of Attributes: 3
>   units :
>   long_name :    Occurrence Count: vMax=35
>   _FillValue :    1e+20
> ====================================================
>   test_lat =  20.0
>   test_lon = 130.0
>   print("---")
>   print("---> ("+test_lat+","+test_lon+")")
>   print("count ="+count({test_lat},{test_lon}))     ; coordinate
> subscripting {...}
>   print("valavg="+valavg({test_lat},{test_lon}))
>   print("  freq="+  freq({test_lat},{test_lon}))
>   print("---")
>
>
> (0)    ---> (20,130)
> (0)     count =86
> (0)    valavg=76.1047
> (0)         freq=7.83242
>
> =========================================================
> See attached
>
> On Mon, Apr 9, 2018 at 7:12 PM, Dave Allured - NOAA Affiliate <
> dave.allured at noaa.gov> wrote:
>
>> Oops, there is a bug in my print statement.  Change "lines" to "data":
>>
>>        print (count(jl,il) + "  " + data(n))
>>
>>
>> On Mon, Apr 9, 2018 at 6:22 PM, Dave Allured - NOAA Affiliate <
>> dave.allured at noaa.gov> wrote:
>>
>>> Lyndz,
>>>
>>> Try this to find the problem with your counting method.  Below this line:
>>>
>>>     valavg(jl,il) = valavg(jl,il) + cval(n)
>>>
>>> Add these code lines:
>>>
>>>     test_lat =  20.0
>>>     test_lon = 130.0
>>>     jtest    = toint((test_lat-latS)/dlat)
>>>     itest    = toint((test_lon-lonW)/dlon)
>>>
>>>     if (il .eq. itest .and. jl .eq. jtest) then
>>>       print (count(jl,il) + "  " + lines(n))
>>>     end if
>>>
>>> In the code above, change test_lat and test_lon to the coordinates of
>>> any single grid box that you want to check.  Then run the program.  This
>>> will print every input record that gets counted for that one grid box.
>>>
>>> For example, I get 86 counts for the grid box example above, i..e. 20N,
>>> 130E.
>>>
>>> --Dave
>>>
>>>
>>> On Sun, Apr 8, 2018 at 9:04 PM, Lyndz <olagueralyndonmark429 at gmail.com>
>>> wrote:
>>>
>>>> Hi Sir Dennis,
>>>>
>>>> I tried your suggestion. I was able to run the script but I'm getting a
>>>> very large count. When I counted it manually, the count does not exceed 10.
>>>> But I'm getting around 88.
>>>> Attached are the output image, csv input file, and modified script.
>>>>
>>>> I only wanted to count the TC with Vmax greater than 35knts. So I tried
>>>> masking first the data.
>>>>
>>>> I might be missing one important step here.
>>>>
>>>> Many thanks for the help.
>>>>
>>>> Sincerely,
>>>>
>>>> Lyndz
>>>>
>>>>
>>>> On Mon, Apr 9, 2018 at 3:17 AM, Dennis Shea <shea at ucar.edu> wrote:
>>>>
>>>>> http://www.ncl.ucar.edu/Applications/binning.shtml
>>>>>
>>>>> See Example 2:
>>>>>
>>>>>   freq  = count
>>>>>   freq  = (count/npts)*100   ; comment this
>>>>>
>>>>>
>>>>> On Sat, Apr 7, 2018 at 9:05 PM, Lyndz <olagueralyndonmark429 at gmail.com
>>>>> > wrote:
>>>>>
>>>>>> Hi Sir Rick,
>>>>>>
>>>>>> Thank you for the fast response.
>>>>>> I wanted to create a 5degree by 5degree grid NetCDF file from the
>>>>>> shapefile, where each grid box contains the "count"(frequency) of unique TC
>>>>>> tracks per category.
>>>>>> I'm just wondering if this is possible to do in NCL.
>>>>>>
>>>>>> Sincerely,
>>>>>>
>>>>>> Lyndz
>>>>>>
>>>>>>
>>>>>> On Sun, Apr 8, 2018 at 3:34 AM, Rick Brownrigg <brownrig at ucar.edu>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Lyndz,
>>>>>>>
>>>>>>> I'm not sure there is a "correct" way to do this. NetCDF is really
>>>>>>> good at representing regular arrays of data, whereas polylines/polygons
>>>>>>> tend to have varying numbers of coordinate pairs -- what would lat and lon
>>>>>>> variables look like in that case, and what would be the meaning of lat/lon
>>>>>>> dimensions?  NCL makes a shapefile *look* like a NetCDF file by packing the
>>>>>>> coordinate information for all features into the x/y variables, but then
>>>>>>> one has to utilize the geometry and segments variables to unpack
>>>>>>> coordinates for each feature. The shapefiles examples page show many
>>>>>>> examples of doing this:
>>>>>>>
>>>>>>>     http://ncl.ucar.edu/Applications/shapefiles.shtml
>>>>>>>
>>>>>>> If you are working with NCL, you are probably better off leaving
>>>>>>> your data as a shapefile*. *I take it however that you have other
>>>>>>> reasons for wanting a NetCDF file?
>>>>>>>
>>>>>>> Finally, I might comment that the conversion result may not be
>>>>>>> correct -- its suspect to me that the "num_points" value is exactly twice
>>>>>>> the value of "num_features" -- I wonder if maybe just the end-points of the
>>>>>>> tracks where what got captured in the conversion?
>>>>>>>
>>>>>>> Rick
>>>>>>>
>>>>>>> On Fri, Apr 6, 2018 at 11:30 PM, Lyndz <
>>>>>>> olagueralyndonmark429 at gmail.com> wrote:
>>>>>>>
>>>>>>>> Dear NCL experts,
>>>>>>>>
>>>>>>>> I would like to convert the following shapefile to a netcdf file.
>>>>>>>> I created the shapefile from a csv file containing jtwc tc tracks
>>>>>>>> (see attached csv2shp.py)
>>>>>>>> Also attached is the csv file.
>>>>>>>>
>>>>>>>> When I used the ncl_convert2nc the netcdf file has no lat-lon
>>>>>>>> dimension. Here's the output of the ncdump. Is it also possible to divide
>>>>>>>> the TC categories by dividing the Vmax values?
>>>>>>>>
>>>>>>>> I'll appreciate any suggestion on how to do this correctly.
>>>>>>>>
>>>>>>>> netcdf par_jtwc_above_ts_1979-1993 {
>>>>>>>> dimensions:
>>>>>>>> geometry = 2 ;
>>>>>>>> segments = 2 ;
>>>>>>>> num_features = 1050 ;
>>>>>>>> num_segments = 1050 ;
>>>>>>>> num_points = 2100 ;
>>>>>>>> variables:
>>>>>>>> int geometry(num_features, geometry) ;
>>>>>>>> int segments(num_segments, segments) ;
>>>>>>>> double x(num_points) ;
>>>>>>>> double y(num_points) ;
>>>>>>>> int SN(num_features) ;
>>>>>>>> int CY(num_features) ;
>>>>>>>> int Y1(num_features) ;
>>>>>>>> int M1(num_features) ;
>>>>>>>> int D1(num_features) ;
>>>>>>>> int H1(num_features) ;
>>>>>>>> int VMax1(num_features) ;
>>>>>>>> int Y2(num_features) ;
>>>>>>>> int M2(num_features) ;
>>>>>>>> int D2(num_features) ;
>>>>>>>> int H2(num_features) ;
>>>>>>>> int VMax2(num_features) ;
>>>>>>>>
>>>>>>>> // global attributes:
>>>>>>>> :segs_numPnts = 1 ;
>>>>>>>> :segs_xyzIndex = 0 ;
>>>>>>>> :geom_numSegs = 1 ;
>>>>>>>> :geom_segIndex = 0 ;
>>>>>>>> :geometry_type = "polyline" ;
>>>>>>>> :layer_name = "par_jtwc_above_ts_1979-1993" ;
>>>>>>>> :creation_date = "Sat Apr  7 14:11:24 JST 2018" ;
>>>>>>>> :NCL_Version = "6.4.0" ;
>>>>>>>> :system = "Linux localhost.localdomain 3.10.0-327.36.3.el7.x86_64
>>>>>>>> #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux" ;
>>>>>>>> :Conventions = "None" ;
>>>>>>>> :title = "NCL: convert-OGR-to-netCDF" ;
>>>>>>>> }
>>>>>>>>
>>>>>>>> Sincerely,
>>>>>>>>
>>>>>>>> Lyndz
>>>>>>>>
>>>>>>>
>> _______________________________________________
>> 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/20180410/c1927d51/attachment.html>


More information about the ncl-talk mailing list