2

I have a script that uses an ArcInfo level tool. The script works great on my machine but uses an ArcInfo level tool which the ArcView users don't have.

Is exposing these ArcInfo level tools possible throught ArcGIS server? What I am having trouble conceptualizing is how my python script tool will call that gp service. Please help me think through the liscensing and calling the gp service from a custom python script tool on the toolbox.

I have ArcInfo, I added the tool to arcmap's TOC saved the mxd and opened the tool and ran it once. I then published the tool throught ArcGIS Server. I am stumbling on how to proceed. Thanks.

2 Answers 2

1

To expose ArcInfo level licensing my understanding is that you will need ArcGIS Server Advanced when most people have the Standard (or Basic) license level.

I think of ArcGIS Server Standard as being "ArcView over the web" and ArcGIS Server Advanced as being "ArcInfo over the web".

Which ArcInfo tool are you using?

I ask because some key ones can be replaced by ArcView workarounds, which may let your users use your script at ArcView license level, and if you still want to expose it to ArcGIS Server will let you keep that license at Standard level.

7
  • The tool at hand is arcpy.featuretovertices_ which i can replicate with the standard. but i think i may have a few more which may not pass the cost/benefit. thanks
    – Justin
    Commented Mar 15, 2012 at 4:34
  • Two that I often use workarounds for are Frequency and Erase, but depending on what you need the saving of purchase and maintenance for multiple ArcInfo's or a single AGS Advanced could make it attractive to list them here and work through which do and don't already have ArcView workarounds. I don't have one for Feature Vertices to Points but can envisage that one not being too hard to write unless it needs to process lots of polygons very fast. I'd look for someone else's code first.
    – PolyGeo
    Commented Mar 15, 2012 at 6:32
  • See my answer. The other tool that is help.arcgis.com shows as ArcInfo is Point Distance (Analysis).. help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
    – Justin
    Commented Mar 15, 2012 at 14:07
  • I think a workaround for that could be written by taking each point and buffering incrementally until it finds (an)other point(s) and then, if necessary, decrementally until it finds only one. However, if it needs to process lots of polygons very fast this is not going to be suitable.
    – PolyGeo
    Commented Mar 15, 2012 at 22:40
  • Euclidean Distances look like they could also be worked out using existing Python code accessed via stackoverflow.com/questions/1871536/… and docs.scipy.org/doc/scipy/reference/spatial.distance.html
    – PolyGeo
    Commented Mar 15, 2012 at 22:50
1

This is an answer to PolyGeo well-taken suggestions..code for feature vertices to points..via http://eaglemap.com/blog/bid/48522/Using-ArcMap-to-Load-APDM-PODS-ESRI-Spatial-ControlPoint-Features

for the hoi polloi..if you read through their blog

import arcpy 
inputPolylineFeatureLayer = arcpy.GetParameterAsText(0) 
outputPointFeatureClass = arcpy.GetParameterAsText(1) 
outName = outputPointFeatureClass.split("\\")[-1] 
outPath = "\\".join(outputPointFeatureClass.split("\\")[:-1]) 
arcpy.CreateFeatureclass_management(outPath, outName, "POINT", 
inputPolylineFeatureLayer, \     
    "SAME_AS_TEMPLATE", "SAME_AS_TEMPLATE", inputPolylineFeatureLayer) 
outputFields = arcpy.ListFields(outputPointFeatureClass) 
inPolylineRows = arcpy.SearchCursor(inputPolylineFeatureLayer) 
outPointRows = arcpy.InsertCursor(outputPointFeatureClass) 
for inPolylineRow in inPolylineRows:     
    inPolyline = \         
        inPolylineRow.getValue(arcpy.Describe(inputPolylineFeatureLayer).shapeFieldName)     
    partCount = inPolyline.partCount     
    partNum = 0     
    while partNum < partCount:         
        pntArray = inPolyline.getPart(partNum)         
        pntCount = pntArray.count         
        pntNum = 0         
        while pntNum < pntCount:             
            outPointRow = outPointRows.newRow()             
            outPointRow.setValue("Shape", pntArray.getObject(pntNum))             
            for field in outputFields:                 
                if field.type <> "Geometry" and field.type <> "OID":                     
                    outPointRow.setValue(field.name, inPolylineRow.getValue(field.name))             
            outPointRows.insertRow(outPointRow)             
            pntNum = pntNum + 1         
        partNum = partNum + 1 
del outPointRow, outPointRows, inPolylineRow, inPolylineRows
2
  • How could we tag this so it will be returned in searches? If someone knows please share.
    – Justin
    Commented Mar 15, 2012 at 14:13
  • In the meta forum area, there is discussion regarding possibly using the "code" tag. Commented Mar 15, 2012 at 15:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.