POST
|
I believe that the only NAServer operations currently supported are Route, Service Area, and Closest Facility. For VRP you would have to leverage a geoprocessing service.
... View more
02-25-2016
07:03 AM
|
1
|
1
|
467
|
POST
|
Can you show how you were creating the cursor when you were trying to use the selection? I'm curious if you were using the layer object in the map or the path to the data on disk. The SearchCursor should respect the selection in the layer object. I would think that you'd be able to use a tool validator to parse the needed information and pass it to your tool.
... View more
02-23-2016
08:02 AM
|
1
|
1
|
2036
|
POST
|
You'll want to look at the python help for concatenating strings. The simplest option would be as follows. !LOCN!.lstrip() + " " + !LOCD!.lstrip() + " " + !LOCS! A cleaner example would be to use string.format "{0} {1} {2}".format(!LOCN!.lstrip(), !LOCD!.lstrip(), !LOCS!.lstrip()) String Concatenation and Formatting Python String lstrip() Method
... View more
02-23-2016
07:57 AM
|
1
|
7
|
1759
|
POST
|
MapObjects GIS Developers contains the following subspaces ArcObjects SDK Python File Geodatabase API ArcGIS Pro SDK is a group for Pro SDK. I don't remember seeing a space for it, but Timothy Hales would probably be able to give us more information about if there is a space for it.
... View more
02-12-2016
05:03 AM
|
1
|
1
|
292
|
POST
|
.NET Runtime requires a minimum of the 4.5 version of the .NET Framework. This would require that you utilize a version of Visual Studio that supports this framework. I believe that Visual Studio 2010 only allows you to use up to .NET 4.0. You can see the supported versions of Visual Studio on the following page. System requirements—ArcGIS Runtime SDK for .NET | ArcGIS for Developers In regards to the licensing, I believe that you may be looking at an older version of the licensing model. In Runtime .NET your licensing code should appear as follows: // Deployed applications must be licensed at the Basic level or greater (https://developers.arcgis.com/licensing).
// To enable Basic level functionality set the Client ID property before initializing the ArcGIS Runtime.
ArcGISRuntimeEnvironment.ClientId = "<Your Client ID>";
// Initialize the ArcGIS Runtime before any components are created.
ArcGISRuntimeEnvironment.Initialize();
// Standard level functionality can be enabled once the ArcGIS Runtime is initialized.
// To enable Standard level functionality you must either:
// 1. Allow the app user to authenticate with ArcGIS Online or Portal for ArcGIS then call the set license method with their license info.
// ArcGISRuntimeEnvironment.License.SetLicense(LicenseInfo object returned from an ArcGIS Portal instance)
// 2. Call the set license method with a license string obtained from Esri Customer Service or your local Esri distributor.
// ArcGISRuntimeEnvironment.License.SetLicense("<Your License String or Strings (extensions) Here>"); With a basic license you would be able to view shapefiles and access services. To use local feature layers or local services you'd be require to purchase a standard license.
... View more
01-28-2016
08:27 AM
|
2
|
5
|
1056
|
POST
|
The below snippet should be enough to get you started. It shows how I'm able to export each sublayer of the network analyst layer to its own feature class. I modified this sample from the online sample. # Name: MakeRouteLayer_Workflow.py
# Description: Find a best route to visit the stop locations and save the
# route to a layer file. The stop locations are geocoded from a
# text file containing the addresses.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
from arcpy import mapping as m
from os import path as p
srcPath = p.join(p.dirname(__file__), "data")
try:
#Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")
#Set environment settings
env.workspace = p.join(srcPath, "SanFrancisco.gdb")
env.overwriteOutput = True
#Set local variables
inNetworkDataset = "Transportation/Streets_ND"
outNALayerName = "BestRoute"
impedanceAttribute = "TravelTime"
resGDB = p.join(srcPath, "Results.gdb")
if arcpy.Exists(resGDB):
arcpy.management.Delete(resGDB)
arcpy.management.CreateFileGDB(*p.split(resGDB))
#Create a new Route layer. For this scenario, the default value for all the
#remaining parameters statisfies the analysis requirements
outNALayer = arcpy.na.MakeRouteLayer(inNetworkDataset, outNALayerName,
impedanceAttribute)
#Get the layer object from the result object. The route layer can now be
#referenced using the layer object.
outNALayer = outNALayer.getOutput(0)
#Get the names of all the sublayers within the route layer.
subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
#Stores the layer names that we will use later
stopsLayerName = subLayerNames["Stops"]
#Load the geocoded address locations as stops mapping the address field from
#geocoded stop features as Name property using field mappings.
fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, stopsLayerName)
fieldMappings["Name"].mappedFieldName = "NAME"
arcpy.na.AddLocations(outNALayer, stopsLayerName, "Analysis/CandidateStores", fieldMappings,
"", exclude_restricted_elements = "EXCLUDE")
#Solve the route layer, ignore any invalid locations such as those that
#can not be geocoded
arcpy.na.Solve(outNALayer,"SKIP")
# List sublayers in NALayer Group and export each
for lyr in m.ListLayers(outNALayer):
if lyr.isGroupLayer:
continue
arcpy.management.CopyFeatures(lyr, p.join(resGDB, lyr.name))
print "Script completed successfully"
except Exception as e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "An error occured on line %i" % tb.tb_lineno
print str(e)
... View more
01-19-2016
06:18 AM
|
3
|
0
|
802
|
POST
|
Technically yes...but it would make more sense to migrate your logic to a construct that would be easier to run headlessly, like a standalone console application (i.e. exe) or gp service. If you must run the logic as an addin then you'd need to write an additional application to automate driving a session of ArcMap so that you can get a hook into your addin content and interact with it as needed. The following two pages would get you started. Automating the ArcGIS Desktop Application http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/#/Automating_the_ArcGIS_Desktop_applications/0001000001nn000000/ How to create an application to run on a schedule http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/index.html#//0001000002nt000000
... View more
01-19-2016
04:45 AM
|
1
|
0
|
797
|
POST
|
This should get you started. How to create a polyline http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/#/How_to_create_a_polyline/0001000000v0000000/
... View more
01-15-2016
09:33 AM
|
1
|
0
|
371
|
POST
|
Export the table first and then execute the calculations against the newly generated table. In your original code this was how you were implementing your business logic.
... View more
01-04-2016
12:54 PM
|
1
|
1
|
1005
|
POST
|
Is you copied the script the answer would be yes. Script tools will point to a script file. If you copy the script tool without copying and resourcing the script then both tools will point to the same business logic.
... View more
01-04-2016
11:39 AM
|
1
|
0
|
372
|
POST
|
You would need to leverage ArcObjects to accomplish this against an existing layer object. I'd assume that the code needed would be similar to the following snippet I put together. static void MakeFieldReadonly(ESRI.ArcGIS.Carto.ILayer layer, string fieldname)
{
// Get the fields for the layer
var layerfields = layer as ESRI.ArcGIS.Carto.ILayerFields;
for (int i = 0; i < layerfields.FieldCount; i++)
{
// Set field readonly property to true if field matches needed field
if (layerfields.Field.Name.Equals(fieldname, System.StringComparison.InvariantCultureIgnoreCase))
(layerfields.FieldInfo as ESRI.ArcGIS.Geodatabase.IFieldInfo3).Readonly = true;
}
} From what I understand the readonly property is only valid within the client. As such, I don't believe that you'd ever be able to persist this value within the geodatabase without making the entire feature class readonly. If it were possible to set this value then I'd assume that there'd be a method available within IClassSchemaEdit, but so far I haven't seen a method available that would allow that.
... View more
12-31-2015
09:23 AM
|
1
|
4
|
1394
|
POST
|
You have two problems. 1) ListFields returns field objects and you're attempting to leverage these as strings when you need to leverage the name property of the field object. 2) your expression is missing the delimiters for the field calculation. I've pasted a corrected copy of your code below along with a couple of alternatives that I thought of off the top of my head. import arcpy
table = r"C:\Temp\ParAdminTable.dbf"
for field in arcpy.ListFields(table, "*", "String"):
calcSql = "' '.join(!{0}!.strip().split())".format(field.name)
arcpy.management.CalculateField(table, field.name, calcSql, "PYTHON")
arcpy.conversion.TableToTable(table, r"C:\Temp", "ParAdmin_Test.dbf")
# Option 2 : Only removes extra spacing at begining and end
for field in [f.name for f in arcpy.Describe(table).fields if f.type == "String"]:
exp = "!{0}!.strip()"
arcpy.management.CalculateField(table, field, exp.format(field), "PYTHON")
# Option 3 : Remove all extra spaces
for field in [f.name for f in arcpy.Describe(table).fields if f.type == "String"]:
exp = "' '.join([t for t in !{0}!.split(' ') if t not in ('', ' ', None)])"
arcpy.management.CalculateField(table, field, exp.format(field), "PYTHON")
... View more
12-29-2015
09:32 AM
|
2
|
4
|
1005
|
POST
|
The error you're seeing is expected. When using a parameter of type workspace the only filter values that you can use are to filter the type of workspace supplied (i.e. File System, Local Database, or Remote Database). You'll want to use a parameter type that allows you to have a dropdown with known paths, such as GPString. This is documented on the following page and holds true for both script tools and python toolboxes. Defining parameters in a Python toolbox http://desktop.arcgis.com/en/desktop/latest/analyze/creating-tools/defining-parameters-in-a-python-toolbox.htm Setting script tool parameters (Script tool equivalent to the above documentation) http://desktop.arcgis.com/en/desktop/latest/analyze/creating-tools/setting-script-tool-parameters.htm#GUID-3CB5FAF4-43DD-4C84-8AFE-08039A72B3E0 ** Screenshot of filters that become available in the UI against a parameter of type DEWorkspace. **
... View more
12-28-2015
03:20 PM
|
1
|
0
|
2229
|
POST
|
If you're just needing the path to the map document on disk you could also just leverage the filePath property of the MapDocument class. In this case you'd just call mxd.filePath. MapDocument http://desktop.arcgis.com/en/desktop/latest/analyze/arcpy-mapping/mapdocument-class.htm Otherwise, you can save yourself some un-needed code and stitch together the path from the workspace and the mxd name that you used to open the MapDocument. Once you add the walk logic it'd probably look something like the following: import arcpy
from arcpy import mapping as m
from os import path, walk
def FindMaps(root_directory, path_to_find):
maps = []
for root, dirnames, filenames in walk(root_directory):
for fname in [f for f in filenames if f.endswith(".mxd")]:
mxdPath = path.join(root, fname)
if not path.isfile(mxdPath):
continue
mxd = m.MapDocument(mxdPath)
for df in m.ListDataFrames(mxd):
for lyr in m.ListLayers(mxd, data_frame=df):
if lyr.supports("DATASOURCE"):
if lyr.dataSource == path_to_find:
print(mxdPath)
maps.append(mxdPath)
break
return maps
... View more
12-21-2015
08:41 AM
|
2
|
2
|
1000
|
POST
|
Is this what you're looking for? http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#/The_ArcGIS_REST_API/02r300000054000000/
... View more
12-17-2015
02:46 PM
|
1
|
0
|
444
|
Title | Kudos | Posted |
---|---|---|
1 | 01-19-2016 04:45 AM | |
1 | 09-24-2015 06:45 AM | |
1 | 09-15-2015 10:49 AM | |
1 | 10-12-2015 03:07 PM | |
1 | 11-25-2015 09:10 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|