I am creating polygons from the dissolved buffers of points and need to control the dissolve process. In the model the first stage is to assign high/med/blackspot using the following
f2='ERROR'
def re_score(my_field,f2):
if (my_field*1) < 14:
f2 = 'Black'
elif (my_field*1) < 24:
f2 = 'Medium'
elif (my_field*1) >= 24:
f2 = "High"
Expression = re_score(!Rx!,f2)
and then use the following settings in buffer...
arcpy.Buffer_analysis(Signal_Strength_Added, Buffered_tower_range, Distance__value_or_field_, "FULL", "ROUND", "LIST", "Signal_Strength")
If distance between points is 30m then I buffer at 35m
I want to deal with overlap by defaulting to the worst case scenario, so if when dissolving the buffers are "med" and "blackspot", then it should be incorporated into the blackspot zone - I don't know how to specify this!
Any ideas?
The base points dataset is
Latitude Longitude Rx_dB Best_unit
-17.06694 145.23158 -050.5 2
-17.06695 145.23297 -044.1 2
my_field in this case is the Rx_dB
The image below illustrates the issue... enter image description here
_pts is the output point dataset with signal strength _Lamb is the 30m buffer with dissolve by signal strength _pts_30m_Buffer - is just the buffer without the dissolve
Areas around 1a should be red, 2a/2b area should be yellow and 3 is correct.
Each dataset is around 500,000 points and I am still trying to do a spatial join on a new dataset without the dissolve.
2 Answers 2
After creating the dissolved buffers, spatially join them to the original points and summarize the point attribute table by buffer id, requesting the minimum value of [my_field]. Join the summary table (which is keyed by buffer id) to the buffer table.
Figure
In this figure, points are symbolized by the value of [my_field]: black for low, gray for medium, and white for high values. The buffers are symbolized by the minimum value of [my_field] as obtained through the join-summarize-join procedure described here, again with dark for low, lighter for medium, and lightest for high values. You can visually check that light buffers contain only light points and that any buffer containing even a single a black point will be dark.
-
Seems like an excellent solution. The issue is that in the buffer-dissolve process it creates multi-part polygons. It looks like I will have to run the initial buffer (without dissolve), then join, summarize and join. However I am not clear about "summarize the point attribute table by buffer id, requesting the minimum value of [my_field]." - how is this done? The minimum is a Rx value of <14dB. See edits to question. Thanks againGeorgeC– GeorgeC2012年02月28日 05:55:19 +00:00Commented Feb 28, 2012 at 5:55
-
Instead of summarize -what do you all think of the following process? We use select by attribute, ["Signal_Strength_pts" <> "Signal_Strength_poly"] and then simply replace/populate a new field with the "downgraded" signal strength, so when the values are not equal we do a raster calculator to populate the downgraded column with the lowest value. Will need to use 2,1,0 for high,med,black in the initial assignment process.GeorgeC– GeorgeC2012年02月28日 06:54:42 +00:00Commented Feb 28, 2012 at 6:54
-
Summarizing will be much quicker and easier. Summarizing is a basic operation in ArcGIS, but how you carry it out seems to change from one version to another. One help page is at webhelp.esri.com/arcgiSDEsktop/9.3/… .whuber– whuber2012年02月28日 16:21:01 +00:00Commented Feb 28, 2012 at 16:21
-
-What's not clear is " summarize the point attribute table by buffer id, requesting the minimum value of [my_field]" - my_field is the Rx value and should be 14. So we go right click on Rx, summarize and then what does your screen look like for the test you did? My spatial join on a dataset with 500,000 points has taken 6h to do 10%...GeorgeC– GeorgeC2012年03月01日 07:02:09 +00:00Commented Mar 1, 2012 at 7:02
-
When you summarize a table, you expect the summary to have one record for each unique value of the key field, which in this case is "buffer id". Therefore, you right-click on "buffer id" (not "my field") to initiate the summarize operation. (Read the "Summarize" dialog carefully: it tells you what it's going to do.) As far as the performance for a spatial join goes, that's another issue altogether. In principle it should work and it should be fast. That might make a good follow-up question for this site: perhaps someone can suggest a solution.whuber– whuber2012年03月01日 15:42:39 +00:00Commented Mar 1, 2012 at 15:42
Used an Arcgis model to spacialize the dataset (import xyz) after simplifying it as ARCGIS did not allow for datasets with more than 1million points and mine had 30million+.
Cygwin/SED/Python used to make the dataset geo-codeable (as output from RadioMobile had characters/lines that were illegal for database operations) and split each dataset to 250,000 to 1 million records each to increase processing efficiency and reduce risk of larger files crashing the Arcgis models.
$ cd /cygdrive/P/2012/Job_044_DM_Radio_Propogation/Working/FinalPropogation/cb_CHL03/working
$ sed -i -e '4 s/(dB)//' -e '4 s/Best\ unit/Best_Unit/' -e '1,3 d' '/cygdrive/P/2012/Job_044_DM_Radio_Propogation/Working/RM/trc_lamb.txt']]
All values less than a threshold (18) were dropped using python.
and then simplify using field calculator where
if (Rx) < 18:
f2 = '0'
elif (Rx) < 24:
f2 = '1'
elif (Rx) >= 32:
f2 = "2"
Rx is the dBuV/m and f2 (in this case) is the signal strength code where, 0 (red) is low/no signal, 1 (yellow) is medium and 2 (green) is good signal (this is according to [insert full ref] where the software estimates 70% probability of accurate results. This is based on radio handbooks specifying actual levels needed for a 1.6MHz bandwidth UHF coverage is shown on page 93 (RSGB Yearbook – 2011) as>24dBuV/m and>32dBuV/m. The signal limits shown have the following interpretation: The colours represent 24dBμV/m (magenta) and broadly equates to 90% likelihood of mobile reception and 32dBμV/m (blue) represents 99% mobile and 90% handheld use.
As the dissolve buffer functions in Arcgis do not allow control of how the polygons with signal strength are dissolved/created the following process was used to downgrade each point before the final buffers were created. The pts and polygons were joined spatially and then whenever the derived signal strengths were not equal the lower value was used (this was processed in a model). The main process was
def re_score(f1,f2):
if f1 < f2:
out1 = f1
else:
out1 = f2
return out1
for expression
re_score(!SS!, !SS_1!)
The above process created a polygon shape file and Radio Mobile created a kml based raster output of the signal strength of a single tower in a worst case scenario. RM also creates a freshnel zone and enables uses to move and check signal strengths within each radio network.
re_score
). Is this a correct interpretation?