POST
|
Here is an actual example, and also some notes: 1. This method is WAY faster if you can use the data access cursors (new in v10.1)... Like about 20x faster! 2. As Duncan said, you may indeed run out of 32-bit memory with 7.5 million rows. I've experienced this... Remember that ints take up less RAM than floats way way less than strings.... especially long strings. 3. Unlike the example below, it would be way more compact to make just one dictionary and for each look up table, append to the attribute tuple/list that each key is pointing to... No need to have duplicate keys if only one key is required. #Process: Build dictionaries of the basin size stats that we can then use in an update cursor - faster than join/calc
message = "Populating BASIN_SIZE_DICT..."; showPyMessage()
basinSizeDict = dict([(r.VALUE, (r.MIN, r.MAX, int(r.MEAN + .5))) for r in arcpy.SearchCursor(flowAccZoneStatTbl)]) #Int
message = "Populating SLOPE_DICT..."; showPyMessage()
slopeDict = dict([(r.VALUE, (r.MIN, r.MAX, int(r.MEAN + .5))) for r in arcpy.SearchCursor(slopePctZoneStatTbl)]) #Int
message = "Populating CURVE_PLAN3_DICT..."; showPyMessage()
curvePlan3Dict = dict([(r.VALUE, (r.MEAN)) for r in arcpy.SearchCursor(curvePlan3ZoneStatTbl)]) #Float
message = "Populating ELEV_DICT..."; showPyMessage()
elevationDict = dict([(r.VALUE, (r.MIN, r.MAX, int(r.MEAN + .5))) for r in arcpy.SearchCursor(elevationZoneStatTbl)]) #Int
#Process: Blah blah
##...State Secrets...
#Process: Update the streamFC table
message = "Updating stream table..."; showPyMessage()
updateRows = arcpy.UpdateCursor(streamFC)
for updateRow in updateRows:
streamIdValue = updateRow.STREAM_ID
if streamIdValue in outFlowStreamLinkList:
updateRow.OUT_FLG = 1
else:
updateRow.OUT_FLG = -1
updateRow.TILE_NO = int(areaId)
updateRow.SUB_NET = streamNetworkIdDict[streamIdValue]
updateRow.ACRE_MIN = basinSizeDict[streamIdValue][0] * cellSize ** 2 / 43560 #SQ FEET TO ACRES
updateRow.ACRE_MAX = basinSizeDict[streamIdValue][1] * cellSize ** 2 / 43560 #SQ FEET TO ACRES
updateRow.ACRE_MEAN = basinSizeDict[streamIdValue][2] * cellSize ** 2 / 43560 #SQ FEET TO ACRES
del basinSizeDict[streamIdValue]
updateRow.ELEV_MIN = elevationDict[streamIdValue][0]
updateRow.ELEV_MAX = elevationDict[streamIdValue][1]
updateRow.ELEV_MEAN = elevationDict[streamIdValue][2]
del elevationDict[streamIdValue]
updateRow.SLOPE_MIN = slopeDict[streamIdValue][0]
updateRow.SLOPE_MAX = slopeDict[streamIdValue][1]
updateRow.SLOPE_MEAN = slopeDict[streamIdValue][2]
del slopeDict[streamIdValue]
updateRow.PCRV3_MEAN = curvePlan3Dict[streamIdValue]
del curvePlan3Dict[streamIdValue]
updateRows.updateRow(updateRow)
del updateRow, updateRows
message = "Done updating stream table!"; showPyMessage() Chris, Can't thank you enough for all the posts relating to cursors and domains on this forum. Finally, our organization will be able to utilize cartographic representations, and do other sorts of everyday tasks such as update feature classes that have more than 100 records. Cheers, abe h.
... View more
01-12-2013
09:15 AM
|
0
|
0
|
2198
|
POST
|
Hi Abe, Currently the API sample and widget do not support this functionality. I have another functionality enhancement to the widget that I need to work on, so hopefully I can get this in there as well. I'll let you know when it gets updated. Glad you like the widget. I setup the code to allow the user to specify an attribute to be used for the heatmap 'weight' property. It changes the heat, though, I don't really understand what it accomplishes, or what the weight affects. Color? Even though each heatpoint has a different magnitude (in this example), and a different weight, they all draw at the same color. Do you understand what is happening?
... View more
09-01-2012
12:28 PM
|
0
|
0
|
684
|
POST
|
Is there a way to change the radius of the heat per point based on a point attribute (value), such as magnitude of earthquake with the sample provided? Great widget by the way.
... View more
08-28-2012
06:50 PM
|
0
|
0
|
684
|
POST
|
I have a graphics layer. Upon selecting (mouse click) the graphic, I'd like to remove the graphic AND bring up the pop up info window for that particular underlying feature class all in one single click of the mouse. Currently, the application requires two clicks: One click to remove the graphic, and a second click to bring up the info window. When I use the following call to AppEvent.SHOWINFOWINDOW, it simply brings up the info for the last item shown, instead of the feature class beneath the graphic (I hope that makes sense). I know I'm missing something... Hard to find any documentation on using this AppEvent. Any and all help is surely appreciated. See code block below. protected function graphicClickEvent(event:MouseEvent):void { // removes selected graphic var selGraphic:Graphic = event.target as Graphic; myGraphicsLayer.remove(selGraphic); // show info window AppEvent.dispatch(AppEvent.SHOW_INFOWINDOW); } I've also tried something like the following and got the same results: protected function graphicClickEvent(event:MouseEvent):void { // removes selected graphic var selGraphic:Graphic = event.target as Graphic; myGraphicsLayer.remove(selGraphic); // show info window const gMapPoint:MapPoint = event.target.geometry.extent.center; hostComponent.map.infoWindow.show(gMapPoint); }
... View more
05-14-2012
11:04 AM
|
0
|
1
|
529
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|