Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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.

share|improve this question
add comment

2 Answers 2

up vote 1 down vote accepted

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.

share|improve this answer
    
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 Mar 15 '12 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 Mar 15 '12 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 Mar 15 '12 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 Mar 15 '12 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 Mar 15 '12 at 22:50
show 2 more comments

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
share|improve this answer
    
How could we tag this so it will be returned in searches? If someone knows please share. –  Justin Mar 15 '12 at 14:13
    
In the meta forum area, there is discussion regarding possibly using the "code" tag. –  RyanDalton Mar 15 '12 at 15:21
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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