POST
|
I just wanted to post what I learned from trying to install the .NET Framework 3.5.1 on Windows Server 2012 R2. Apparently, Windows Server 2012 and Windows 8 use a concept called Features on Demand, where the source files for Windows features are not installed on the machine by default. Thus, you either have to use Windows Update, or provide a WIM image file or a side-by-side (SxS) store. Following most help on the web, I tried to use the Add Roles and Features Wizard and specify a source file location pointing to a copy of the sources/sxs folder in the installation media. I still continued to get errors, even when using DISM and following various troubleshooting procedures. It appears that having a Windows Server Update Service (WSUS) configured was causing the problem. Once I made the connection, I was able to find the following articles. The second article helps explain the concepts very well. http://support.microsoft.com/kb/2734782 http://blogs.technet.com/b/askcore/archive/2012/05/14/windows-8-and-net-framework-3-5.aspx By configuring the group policy setting Specify settings for optional component installation and component repair, I was able to install the .NET Framework 3.5.1 through the Add Roles and Features Wizard using both Windows Update or my sources/sxs folder from the installation media. So, if your system administrator uses WSUS to manage the updates installed on your server, try reading the links above if you can't get .NET Framework 3.5.1 or other Windows features installed.
... View more
05-06-2014
02:05 PM
|
0
|
1
|
18293
|
POST
|
I currently need to use ClearWorkspaceCache in a Python script tool so that it disconnects properly from ArcSDE. I am using the script tool in conjunction with the multiprocessing module and processes running the tool won't join properly, otherwise. Does ClearWorkspaceCache work similarly in models? Would you need to apply it just the same as in a script tool? Also, if a model contains tools that call ClearWorkspaceCache, would that also apply to the rest of the model or just within the scope of the tool that cleared it? I haven't found much documentation on what the cache is exactly and how it behaves. I'm also unclear on what Python objects and Model Builder objects can keep the database connection open.
... View more
01-07-2014
03:03 PM
|
0
|
0
|
1345
|
POST
|
I think I had this issue twice before. I would contact your account manager or customer service. Nathan
... View more
01-06-2014
12:38 PM
|
0
|
0
|
154
|
POST
|
There are other benefits to using the Web Adaptor internally, as well. For one thing, it can be used to host the ArcGIS Services on port 80 instead of 6080, helping mask the actual server endpoints. This also lets you restrict access to the administrative REST interface to port 6080. Most importantly, you can use it to set up Windows Authentication in IIS. In general, the Web Adaptor acts as a proxy to your actual ArcGIS Server. I think you still have some more architectural options externally, but I don't know architecture well enough to make any recommendations. Definitely, consider the Web Adaptor internally, as well.
... View more
01-06-2014
12:31 PM
|
0
|
0
|
221
|
POST
|
I tried creating a topology in ArcSDE 9.3.1 from ArcGIS 10.1 SP1. I received an error regarding empty geometry. I then created it directly from ArcGIS 9.3.1. When I deleted it, I still had errors, but found new messages regarding parcel fabric tables. When I looked at the SDEINTERCEPT logs, after it deleted this tables it seemed to be going through tables in GDB_ITEMS. I remember seeing some parcel fabric tables then too. It's trying to do something after it deletes these topology tables, but I'm not clear what.
... View more
01-02-2014
03:14 PM
|
0
|
0
|
233
|
POST
|
I did some more testing using SDEINTERCEPT. If I delete the topology using a right-click context menu and review the intercept files, the tables in question do exist, are accessed, deleted, and then additional attempts to access them are made at the end of the process. Still, there is no apparent failure. With the GP tool, with Python or in ArcCatalog, something similar happens, but the GP tool fails in response to the Oracle errors. Is anyone able to build a topology in ArcSDE and ArcGIS 10.2 and then delete it successfully using the Delete tool? I am wondering if this is a known issue with 10.1. It feels like a bug to me.
... View more
01-02-2014
03:11 PM
|
0
|
0
|
233
|
POST
|
Hi Val, Try looking at the following URL on paths in Python. To me, you just need to fix the first two paths. They use single backslashes. This looks like you converted a model to Python, but the paths look like they were copied and pasted from ArcCatalog. When you do that, usually you get single backslashes, the way Windows specifies paths. You can add an r before the paths, or change the backslashes to double backslashes or single forward slashes. That will probably fix it. I paste from ArcCatalog sometimes, and then I get errors until I fix the path strings. Look up more information about paths in Python. The problem is that single backslashes are treated like the beginning of an escape sequence, so you either have to use the universal "/" in Python, escape the backslashes ("\\"), or specify that the strings are raw and to read them as is (r""). http://resources.arcgis.com/en/help/main/10.2/index.html#//002z0000000r000000
... View more
01-02-2014
01:52 PM
|
0
|
0
|
391
|
POST
|
Hello, This looks like the issue of not properly specifying your paths. Windows uses backslashes and Linux uses forward slashes. In Python, forward slashes will always work or you can use os.path.sep to get the proper separator for your operating system. If you use one backslash, Python reads it as the start of an escape code, so you have to escape it with double backslashes. The final alternative is to use raw strings and add a lower case r before your path like follows. This reads the string as is, which works correctly in windows. LIVE_CIP_Shapes = r"Database Connections\Connection to bangkok as clvgis.sde\LIVE.CIP_Shapes"
IMSV7_CLV_CIPMAP = r"Database Connections\Connection to HANSEN DEV as IMSV7_READ.odc\IMSV7.CLV_CIPMAP"
Having run across the same issue before, I imagine you copied and pasted the path from ArcCatalog. Here is a link from the ArcGIS help on paths. http://resources.arcgis.com/en/help/main/10.2/index.html#//002z0000000r000000
... View more
01-02-2014
01:43 PM
|
0
|
0
|
391
|
POST
|
Responding to the last two questions, the account being used to delete the topology is the data owner. Also, I had already checked to see if the topology existed before deleting it. Thanks, Nathan
... View more
01-02-2014
01:21 PM
|
0
|
0
|
1012
|
POST
|
Actually, after further research, I believe the return value from Pool.apply_async needs to be an object defined at the top-level of any module. In the end, I decided to write my own Result class that stores the information available through the arcpy.Result methods and lets you retrieve them with an identical interface. It is picklable if all the inputs and outputs are picklable. For my case, I'm mostly using datasets represented as path strings.
class Result(object):
def __init__(self, status, inputs, outputs, messages):
"""Initializes the result.
ARGUMENT DESCRIPTION
-------- -----------
status The job status.
inputs The inputs to the job.
outputs The outputs of the job.
messages The messages of the job represented as a list of
tuples whose values are (severity, message).
STATUS DESCRIPTION
------ -----------
0 New
1 Submitted
2 Waiting
3 Executing
4 Succeeded
5 Failed
6 Timed Out
7 Cancelling
8 Cancelled
9 Deleting
10 Deleted
SEVERITY DESCRIPTION
-------- -----------
0 Informational Message
1 Warning Message
2 Error Message
"""
self._status = status
"""The job status.
STATUS DESCRIPTION
------ -----------
0 New
1 Submitted
2 Waiting
3 Executing
4 Succeeded
5 Failed
6 Timed Out
7 Cancelling
8 Cancelled
9 Deleting
10 Deleted
"""
self._inputs = inputs
"""The inputs to the job."""
self._outputs = outputs
"""The outputs of the job."""
self._messages = messages
"""The messages of the job represented as a list of tuples whose values
are (severity, message).
SEVERITY DESCRIPTION
-------- -----------
0 Informational Message
1 Warning Message
2 Error Message
"""
@classmethod
def from_arcpy_result(cls, result):
"""Creates a Result from an arcpy.Result instance.
ARGUMENT DESCRIPTION
-------- -----------
result An instance of arcpy.Result.
"""
assert isinstance(result, arcpy.Result), (
"Result %r is not an instance of arcpy.Result." % result)
status = result.status
inputs = [result.getInput(i) for i in range(result.inputCount)]
outputs = [result.getOutput(i) for i in range(result.outputCount)]
messages = []
for i in range(result.messageCount):
messages.append((result.getSeverity(i), result.getMessage(i)))
return cls(status, inputs, outputs, messages)
@property
def inputCount(self):
"""The number of inputs of the job."""
return len(self._inputs)
@property
def maxSeverity(self):
"""The maximum severity of the messages.
SEVERITY DESCRIPTION
-------- -----------
0 Informational Message
1 Warning Message
2 Error Message
"""
return max([severity for severity, message in self._messages])
@property
def messageCount(self):
"""The number of messages."""
return len(self._messages)
@property
def outputCount(self):
"""The number of outputs."""
return len(self._outputs)
@property
def resultID(self):
"""The job ID if the tool is a geoprocessing service, else ""."""
return self._resultID
@property
def status(self):
"""The job status.
STATUS DESCRIPTION
------ -----------
0 New
1 Submitted
2 Waiting
3 Executing
4 Succeeded
5 Failed
6 Timed Out
7 Cancelling
8 Cancelled
9 Deleting
10 Deleted
"""
return self._status
def cancel(self):
"""Cancels the job."""
pass
def getInput(self, index):
"""Returns the input at the given index, either as a record set or a
string.
ARGUMENT DESCRIPTION
-------- -----------
index Index of the input to return.
"""
return self._inputs[index]
def getMapImageURL(self, *args, **kwargs):
"""Returns a map service image for a given output, if one exists."""
raise NotImplementedError
def getMessage(self, index):
"""Returns the message at the given index.
ARGUMENT DESCRIPTION
-------- -----------
index Index of the message to return.
"""
return self._messages[index]
def getMessages(self, severity=0):
"""Returns messages of the given severity or greater.
SEVERITY DESCRIPTION
-------- -----------
0 Informational Message
1 Warning Message
2 Error Message
"""
messages = []
for s, m in self._messages:
if s >= severity:
messages.append(m)
return "\n".join(messages)
def getOutput(self, index):
"""Returns the output at the given index, either as a record set or a
string.
ARGUMENT DESCRIPTION
-------- -----------
index Index of the output to return.
"""
return self._outputs[index]
def getSeverity(self, index):
""""Returns the severity of the message at the given index.
SEVERITY DESCRIPTION
-------- -----------
0 Informational Message
1 Warning Message
2 Error Message
"""
return self._messages[index][0]
... View more
01-02-2014
01:14 PM
|
1
|
0
|
1761
|
POST
|
I am getting the same problem in ArcGIS 10.1 SP1 with the same version of ArcSDE. If I create a topology and delete it using the Delete tool in a model, I get the same error. The tables are created by the topology and are deleted by the tool, but an error is still raised. Deleting topology C:\GIS\DatabaseConnections\SDEDEV\arc@SDEDEV.sde\ParcelFabricStaging\pfsCadastralCenterlineTopology... Failed to delete topology C:\GIS\DatabaseConnections\SDEDEV\arc@SDEDEV.sde\ParcelFabricStaging\pfsCadastralCenterlineTopology. Traceback (most recent call last): File "C:\GIS\ETL\Python\DropTopology.py", line 34, in <module> arcpy.management.Delete(topology) File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\management.py", line 3658, in Delete raise e ExecuteError: DBMS table not found [DBMS table not found [ORA-00942: table or view does not exist ][ARC.T_1_PolyErrors]] DBMS table not found [DBMS table not found [ORA-00942: table or view does not exist ][ARC.T_1_LineErrors]] DBMS table not found [DBMS table not found [ORA-00942: table or view does not exist ][ARC.T_1_PointErrors]] Failed to execute (Delete).
... View more
12-13-2013
12:00 PM
|
0
|
0
|
1012
|
POST
|
After reading more about pickling, it appears that the function result from Pool.apply_async needs to be defined in the top-level of the main module. Adding the following solved my pickling problem for the results of the geoprocessing tool: from arcpy import Result
... View more
12-05-2013
08:05 AM
|
0
|
0
|
1761
|
POST
|
After a lot of review of the multiprocessing module code, I believe the worker process in the process pool is raising an exception when it tries to put the arcpy.Result object on outqueue. Trying to run the geoprocessing tool manually and pickling the result raised the following PicklingError. PicklingError: Can't pickle 'geoprocessing server result object' object: <geoprocessing server result object object at 0x13DC4698> I guess the moral of the story is that I really need to understand pickling as it relates to arcpy.
... View more
12-05-2013
07:56 AM
|
0
|
0
|
1761
|
POST
|
As I'm troubleshooting, I'll keep track of my findings here, in case it helps anyone later on. I believe that sys.stderr is being redirected to a custom geoprocessing stderr object somewhere in arcpy which I couldn't locate. Also, line 275 above does not refer to a SystemExit exception, but any other exception. I suspect I am not giving the arguments for the apply_async call properly. I think the issue is avoidable, but I don't think the custom stderr object from arcpy has a flush method like the normal stderr.
... View more
12-05-2013
06:27 AM
|
0
|
0
|
1761
|
POST
|
When you create the csv.DictWriter, the list of fieldnames determines the order in which the fields are written to the .csv file. I would recommend modifying your code to write the rows right after you read them in. With 23 million rows, you don't want to read all of the rows into memory and then write out the data. If you want to keep working on performance, there is a good session from the 2013 DevSummit about geoprocessing in Python and performance. The newer versions of ArcGIS have a new search cursor that runs significantly faster. You may have some other alternative approaches that are even faster, possibly using numPy arrays. Look at the documentation on search cursors. It's usually good to del row, rows when you are done with the search cursor to release any locks.
... View more
12-04-2013
03:52 PM
|
0
|
0
|
2646
|
Title | Kudos | Posted |
---|---|---|
1 | 01-26-2017 03:19 PM | |
1 | 04-16-2015 04:16 PM | |
1 | 10-11-2017 08:28 PM | |
1 | 11-03-2017 01:41 PM | |
2 | 04-12-2018 01:14 PM |
Online Status |
Offline
|
Date Last Visited |
05-05-2021
11:47 AM
|