AnsweredAssumed Answered

Creating 'blob'/partial circles in ArcPy

Question asked by silentcortagrapher on Oct 8, 2019
Latest reply on Oct 30, 2019 by silentcortagrapher



I have a question about how to generate buffers shaped as partials circles with different radii – I am particularly interested in scripting out this method with ArcPy as our current (limited) approach is scripted out, which saves project time.


For context, I am working NOAA hurricane data that has wind radii data values that extend in four directions: NE, SE, SW, and NE. Each value represents how far in each direction certain levels of wind speed extended at different points (every six hours). We create buffers out of those wind radii data to figure out where certain levels of wind speed intersect with different counties of the United States.


Our old ArcGIS analyst created circle buffers by taking the minimum of the four directional values: That is, if at a certain point a hurricane had a certain category of wind speed’s extending 25 miles NE, 50 miles, SE, 75 miles NE, and 70 miles NW she would create a simple circle buffer using the minimum value: a buffer with a radii of 25 miles (ArcPy code for this method and illustration at the end of this post).


Clearly, that method is limited considering hurricanes are not perfect circles and a ‘blob’ forming tool would aid me here.


What I would like to change is illustrated at the end of this post: I would like to create for partial circles with different radii that extend according to the four distances in the NOAA data. What ArcMap tools could I use to create the partial circled with different radii for a single point? I have done some research on my own and the only resource I have noted are multiple ring buffers, which, to my knowledge, cannot be made into partial circles.


Thank you!




Sample ArcPy code for current approach:



arcpy.CalculateField_management("pts","Buff_34","min_val( !NE50WR!, !SE50WR!, !SW50WR!, !NW50WR!)*1000", expression_type="PYTHON_9.3",

code_block='def min_val(a,b,c,d):\n if a == "-999":\n return 0\n else:\n return(min(a,b,c,d))')


arcpy.Buffer_analysis("pts","Hurricane_Buff34","Buff_34",line_side="FULL", line_end_type="ROUND",dissolve_option="NONE", dissolve_field="",method="PLANAR")


Illustration of challenge/vision: