POST
|
Hi @jacob_loughridge Just to give you another tip about coding, especially in GIS, it is best to reduce using gp tools in a script or mid script since those create other features that then need to be utilized, which further complicates scripts. The one cool thing about the geometry methods in arcpy is you can also project features to different projections using projectAs (spatial_reference, {transformation_name}) geometry method.
... View more
a week ago
|
0
|
0
|
33
|
POST
|
It could be it is having trouble reading the geometry of the line feature; depending on if you are using shapefiles vs featureclasses. It is generally recommended to avoid using shapefiles and use featureclasses in filegeodatabases since shapefiles are notorious for getting corrupted. Another option is to read through all of the segments and all of the points in the segments to find the closest point. Read through the line feature class to see if any shape value return. If there is a corrupted record, it will return as a null value.
... View more
a week ago
|
0
|
2
|
78
|
POST
|
Yes. It basically utilizes the geometry of the feature and runs an analysis using the arcpy geometry methods. I have made recommendations to people to avoid using selections in a script and simply utilize the capabilities of the cursors. The cursors themselves will accomplish any gis related task.
... View more
a week ago
|
0
|
0
|
94
|
POST
|
I rewrote your script as such because it was really difficult to read and identify where the issue was. Have you checked out the link in my previous post? It shows you how to utilize the geometry of a feature. The line of code you are trying to use, are you merely copy and paying it into your script or are you running the sample that I provided.
... View more
2 weeks ago
|
1
|
6
|
146
|
POST
|
So, there are a couple of things to mention, not so much the question but issues that I see with the script itself. Avoid nesting loops. In terms of performance, nested loops can be processing killers if they are used within themselves. All cursor functions have SQL clauses that can be used, so having separate select by attribute query layer is unnecessary. In my personal opinion, never set functions within the main portion of a script. I typically set them above the main processes and below the imports. I would also recommend checking out arcpy geometry to get a better understanding of how to utilize feature geometries. import arcpy
from arcpy import ListFields
from arcpy.da import SearchCursor as Searching , UpdateCursor as Updating
# Retrieves records of an input layer/feature and returns a dictionary of values
def GetRecords( Layer , ["OID@"] + Fields + ['SHAPE@'] , SQLClause ):
SearchLayer = Searching( Layer , Fields )
if SQLClause is not None: SearchLayer = Searching( Layer , Fields , SQLClause )
return { row[0] : row[ 1:] for row in SearchLayer }
# Returns a list of field names
def GetFieldNames( Layer , ExcludeFields ):
fieldnames = [ field.name for field in ListFields( Layer ) ]
if type( ExcludeFields ) is list: fieldnames = list( set( fieldnames ).difference( set( ExcludeFields ) ) )
return fieldnames
# Checks the distance between two geometries
def CheckProximity( InputFeatureRecords , DistanceFeatureRecords , SetDistance ):
WithinSetLimits = { }
for IF_id , IF_Attributes in InputFeatureRecords.items():
for DF_id , DF_Attributes in DistanceFeatureRecords.items():
Point = IF_Attributes[ 0 ]
Line = DF_Attributes[ 0 ]
if Point.distanceTo( Line ) <= SetDistance: WithinSetLimits[ IF_id ] = DF_Attributes[ 0 ]
else: WithinSetLimits[ IF_id ] = "Not Within 100 Feet of Stream or River"
return WithinSetLimits
Poles = '<PoleLayer>'
Streams = '<StreamLayer>'
PoleFields = GetFieldNames( infeature , '<[ list of field names to exclude ]>' )
StreamFields = [ "Stream_ID" , "StreamPermanence" ]
PoleRecords = GetRecords( infeature , ["OID@"] + Fields + ['SHAPE@'] )
StreamRecords = GetRecords( infeature , ["OID@"] + Fields + ['SHAPE@'] )
CheckProximity( PoleRecords , StreamRecords , 100 ) The sample above isn't a solution but I just thought to provide something useful to give you a rough idea.
... View more
2 weeks ago
|
2
|
8
|
177
|
IDEA
|
Here is what I have used in the past. import arcgis.gis
from arcgis.gis import GIS
from arcgis.features import FeatureLayer
import datetime
import os
gis = GIS('<Portal>',"<Username>", "<Password>")
#print("Logged into AGOL...")
source_outages_layer_item = gis.content.get("<itemID>") #Outages layer
source_layer = source_outages_layer_item.layers[0]
#print (source_layer)
Current = datetime.datetime.now()
#print (Current)
source_layer.calculate(where = "1=1", calc_expression={"field": "Now", "sqlExpression" : "CURRENT_TIMESTAMP()"})
# Update The Outage Status
source_layer.calculate(where = "Now > TimeField and Now < TimeField", calc_expression={"field": "fieldname", "sqlExpression" : "<Some Value {must match field data type }>"})
source_layer.calculate(where = "Now < TimeField", calc_expression={"field": "fieldname", "sqlExpression" : '<Some Value {must match field data type }>' })
source_layer.calculate(where = "Now > TimeField", calc_expression={"field": "v", "sqlExpression" : '<Some Value {must match field data type }>'})
# Update The Emergency Outage Timeframe
source_layer.calculate(where = 'SQL Clause', calc_expression={"field": "fieldname", "sqlExpression" : "Expression"})
#______________________Write Text File_____________________#
output_location = 'file location'
TxtFileName = ("PythonScriptLog.txt")
TxtFile_Output = os.path.join(output_location, TxtFileName)
f = open(TxtFile_Output, "w")
f.write(str(Current) + '\n' + '\n' + 'Successfully logged into AGO' + '\n' + 'Updated ' + 'Featureclass Name')
f.close() Something that I also realized later on is that you can also treat the feature service like any feature if you use the full url and have editing capabilities on the feature.
... View more
2 weeks ago
|
0
|
0
|
104
|
POST
|
Hi, I am merely trying to create another table within Dashboards using arcade, but I cannot seem to get the feature set to populate using multiple records. I have tested this multiple times, but I am not sure if I need to edit the feature or if there is some other way to go about it. I would greatly appreciate any help on this. var TimeFields = [
{'name': 'InspectionDate' , 'type':'esriFieldTypeDate' },
{'name': 'TimeSlot' , 'type':'esriFieldTypeString' , 'Length':10 }
]
var TimeSlots = {
'fields': TimeFields,
'geometryType': '',
'features' : []
}
var T = Today()
for( var i= 0 ; i < 24 ; i++ ){
var V = { 'InspectionDate' : T , 'TimeSlot' : Text( T , 'h:00 A') }
var F = { geometry : '' , attributes : V }
Push( TimeSlots.features , F )
T = DateAdd( T , 1 , 'hours' )
}
console( TimeSlots.features )
var FS = FeatureSet( Text( TimeSlots ) )
return FS
... View more
2 weeks ago
|
0
|
0
|
116
|
POST
|
Hi @EdHixson You can achieve this by setting the clip function on the map properties rather than in the map series. This will allow for you to exclude any features you choose while preserving the matching shape in the series.
... View more
08-12-2024
06:46 AM
|
2
|
1
|
149
|
POST
|
That is what your issue is. If you are looking for a perfected grid, then the grid to index is your best option. Otherwise, the subdivide polygon is the only tool that would get your polygon to divide as proportionately as possible.
... View more
08-08-2024
06:27 AM
|
0
|
1
|
251
|
POST
|
Have you tried this option? Subdivide Polygon (Data Management)—ArcGIS Pro | Documentation
... View more
08-07-2024
10:02 AM
|
0
|
3
|
270
|
IDEA
|
Hi, I think it would be a great idea to create an arcade function for creating mutli-patch features. This would enable the ability to update an existing multipatch layer/feature without needing to either recreate the feature in autocad or using some other means. I don't know if this could be implemented in the upcoming updates for pro but I am simply throwing it out there. Currently multi-point features can be created but this feels a bit cumbersome to then convert those to a multi-patch feature rather than outright creating it. Especially if users are updating buildings.
... View more
08-06-2024
01:13 PM
|
1
|
0
|
148
|
POST
|
Hi @CCWeedcontrol You can use the Grid Index Feature Tool to automatically create a grid over any feature. If this isn't what you are looking for then you might try the Fishnet tool.
... View more
08-06-2024
01:06 PM
|
1
|
1
|
309
|
IDEA
|
Hi, I noticed that there aren't any options for arcade expressions/attribute rules to update/populate using rasterized features, imagery, or dems and I was wondering if that is something that might be planned for upcoming updates to arcade. For instance, I update a feature layer representing a building that pulls elevation data from a dem and updates either the geometry or the specified field with whatever calculation I need. This would be incredibly helpful and also helps streamlining similar or more complex workflows.
... View more
08-05-2024
06:48 AM
|
0
|
0
|
172
|
POST
|
@christlmistl @ChrisFox answer is the simplest solution to your problem. I would suggest for you to also research the 'console' function which will enable you to see the result in the messages.
... View more
08-02-2024
06:49 AM
|
0
|
0
|
355
|
POST
|
Hi, I believe that there might be a potential bug regarding attribute rules and field maps. I have an editable feature service in field maps that has an attribute rule which populates information from a view table of another server sde table. The rule executes fine in pro but it does not execute in field maps. When executing in field maps, I get the following error message: 'Unable to execute attribute rule <name>. Table cannot be found. I have tried toggling "Exclude from application evaluation" to see if that would fix the issue but to no avail. Has anyone else encountered similar issues when working with views created in sde?
... View more
07-29-2024
05:53 AM
|
2
|
0
|
167
|
Title | Kudos | Posted |
---|---|---|
2 | 2 weeks ago | |
1 | 2 weeks ago | |
2 | 08-12-2024 06:46 AM | |
1 | 08-06-2024 01:13 PM | |
1 | 08-06-2024 01:06 PM |