<div dir="ltr"><div dir="ltr">Hi Michael,<div><br></div><div>As noted, there are <span style="color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif;font-size:16px">24519 individual loops/polygons that make up the border with all its islands, big and small.</span></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif;font-size:16px">One thing you might try is to skip testing against the ones that are composed of small numbers of points.</span></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif;font-size:16px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif;font-size:16px">If you open that file in NCL interactively, and type:</span></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif;font-size:16px"><br></span></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);">f = addfile(.....)</span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);">print(f->segments(:,1))    ; number of x/y coord pairs in each polygon</span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);"><br></span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);">you'll get a sense for the distribution. There are 198 with over 1000 points; depending upon your data and its resolution, I speculate you might still get a good result skipping over anything with less than 1000; obviously this is something to experiment with.</span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);"><br></span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);">Hope that helps...</span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);">Rick</span></font></div><div><font color="#000000" face="Calibri, Helvetica, sans-serif" size="3"><span style="caret-color: rgb(0, 0, 0);"><br></span></font></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 5, 2019 at 9:21 AM Michael Notaro <<a href="mailto:mnotaro@wisc.edu">mnotaro@wisc.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div id="gmail-m_-6335936755293021582divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<p style="margin-top:0px;margin-bottom:0px"></p>
<div>The script below reads in a Canadian GADM shapefile and</div>
<div>creates a 0.1-degree gridded mask where canada=1 for grid cells within Canada</div>
<div>and canada=0 for grid cells outside of Canada.  It works but probably will take</div>
<div>an estimated 15 hours to run.  Can anyone recommend a way to speed it up?</div>
<div>Thanks, Michael</div>
<div><br>
</div>
<div><br>
</div>
<div>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"</div>
<div>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"</div>
<div>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"</div>
<div>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"</div>
<div>load "./shapefile_utils.ncl"</div>
<div>begin</div>
<div><br>
</div>
<div>a=addfile("<a href="http://create_gridded_snwd.nc" target="_blank">create_gridded_snwd.nc</a>","r")</div>
<div>lat=a->lat</div>
<div>lon=a->lon</div>
<div><br>
</div>
<div>b=addfile("gadm36_CAN_shp/gadm36_CAN_0.shp","r") ; num_segments=24519</div>
<div>shape_lon=b->x</div>
<div>shape_lat=b->y</div>
<div>geometry=b->geometry</div>
<div>segments=b->segments</div>
<div>segsDims = dimsizes(segments)</div>
<div>geomDims = dimsizes(geometry)</div>
<div>geom_segIndex = b@geom_segIndex</div>
<div>geom_numSegs  = b@geom_numSegs</div>
<div>segs_xyzIndex = b@segs_xyzIndex</div>
<div>segs_numPnts  = b@segs_numPnts</div>
<div>numFeatures = geomDims(0)</div>
<div><br>
</div>
<div>canada=new((/201,301/),integer)</div>
<div>canada=0</div>
<div><br>
</div>
<div>segNum = 0</div>
<div>do i=0, numFeatures-1</div>
<div>  startSegment = geometry(i, geom_segIndex)</div>
<div>  numSegments  = geometry(i, geom_numSegs)</div>
<div>  do seg=startSegment, startSegment+numSegments-1</div>
<div>    startPT = segments(seg, segs_xyzIndex)</div>
<div>    endPT   = startPT + segments(seg, segs_numPnts) - 1</div>
<div>    lons=shape_lon(startPT:endPT)</div>
<div>    lats=shape_lat(startPT:endPT)</div>
<div>
<div>    do ilat=60,200</div>
<div>      do ilon=0,300</div>
<div>        inout=gc_inout(lat(ilat),lon(ilon),lats,lons)</div>
<div>        if (inout) then</div>
<div>          canada(ilat,ilon)=1</div>
<div>        end if</div>
<div>      end do</div>
<div>    end do</div>
<div>    segNum = segNum + 1</div>
<div>    delete(lons)</div>
<div>    delete(lats)</div>
<div>  end do</div>
<div>end do</div>
<div><br>
</div>
<div>canada!0="lat"</div>
<div>canada!1="lon"</div>
<div>canada&lat=lat</div>
<div>canada&lon=lon</div>
<div><br>
</div>
<div>system("rm <a href="http://create_canada_mask.nc" target="_blank">create_canada_mask.nc</a>")</div>
<div>out=addfile("<a href="http://create_canada_mask.nc" target="_blank">create_canada_mask.nc</a>","c")</div>
<div>out->canada=canada</div>
<div>out->lat=lat</div>
<div>out->lon=lon</div>
<div><br>
</div>
<div>end</div>
<div><br>
</div>
<br>
</div>
<br>
<p></p>
<p style="margin-top:0px;margin-bottom:0px"><br>
</p>
<div id="gmail-m_-6335936755293021582Signature">
<div id="gmail-m_-6335936755293021582divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);background-color:rgb(255,255,255);font-family:Calibri,Arial,Helvetica,sans-serif,Helvetica,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
Michael Notaro<br>
<div>Associate Director<br>
</div>
<div>Nelson Institute Center for Climatic Research<br>
</div>
<div>University of Wisconsin-Madison<br>
</div>
<div>Phone: (608) 261-1503<br>
</div>
<div>Email: <a href="mailto:mnotaro@wisc.edu" target="_blank">mnotaro@wisc.edu</a><br>
</div>
</div>
</div>
</div>
</div>

_______________________________________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">http://mailman.ucar.edu/mailman/listinfo/ncl-talk</a><br>
</blockquote></div>