POST
|
Hi Connor Vincent, You probably need to refresh the feature layer url or the url of the web map that contains this feature layer in the web browser. Or at least close and open the feature layer attribute table in the web map to see the changes after running the script. My apologies I also missed this; update lines 20 and 25 to include index as follows: fset.features[index].attributes['roomstatus'] = 'Vacant'
fset.features[index].attributes['roomstatus'] = 'Occupied'
... View more
09-22-2020
06:45 PM
|
1
|
1
|
10453
|
POST
|
Hi Connor Vincent, Could you please mark it as answered if it answered your question? Thanks.
... View more
09-18-2020
11:30 PM
|
0
|
0
|
10453
|
POST
|
Adityaraj Chavada The function below does the trick: import datetime
def modifiedTime(index, dataframe):
ts = dataframe.iloc[index].created/1000
convertedTime = datetime.datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
return convertedTime This can be included in the for loop to convert the unix time. This is for the 'created' column. Same can be applied to the 'modified' column too.
... View more
09-17-2020
07:03 PM
|
4
|
2
|
1528
|
POST
|
Hi Connor Vincent, Here's the script that updates a feature layer/service attribute (room status) based on the current date, start date and end date. You just need to change the variables first. from arcgis import GIS
import datetime
gis = GIS('url', 'username', 'password', verify_cert=False)
#search for the feature layer/service
featureLayer_item = gis.content.search('type: "Feature Service" AND title:"xxxxxxxx"')
#access the item's feature layers
feature_layers = featureLayer_item[0].layers
flayer = feature_layers[0]
#query all the features and get the spatial dataframe
fset = feature_layers[0].query()
flayer_rows = fset.sdf
# Updating feature service's attribute based on the current date, start date and end date
for index, row in flayer_rows.iterrows():
today = datetime.datetime.today()
if row['start_date'] <= today <= row['end_date']:
print("Updating feature layer ....")
fset.features[0].attributes['roomstatus'] = 'Vacant'
flayer.edit_features(updates = fset.features)
print("Feature layer is set to Occupied!")
else:
print("Updating feature layer ....")
fset.features[0].attributes['roomstatus'] = 'Occupied'
flayer.edit_features(updates = fset.features)
print("Feature layer is set to Vacant!")
... View more
09-16-2020
11:09 PM
|
5
|
2
|
10452
|
POST
|
Hi Frances Biles, I also tested this Split Raster tool and no success in getting the overlap to work. However, if you are now after a result I can recommend using the buffer tool to buffer your split polygons to whatever distance. Then apply the Split Raster tool (this time, leave the overlap 0) on the buffered polygons and the raster. you will get split rasters with overlaps based on the specified distance in your buffering geo-process.
... View more
09-16-2020
08:46 PM
|
1
|
1
|
1269
|
POST
|
Hi Benjamin Mittler, Here's the code you can use to append to a hosted feature layer from a gdb feature class. You just need to change/update, add/delete the attributes based on your hosted feature layer and your gdb feature class attributes and change other variables too. from arcgis import GIS
import pandas as pd
from arcgis.features import GeoAccessor, GeoSeriesAccessor
from arcgis import geometry
from copy import deepcopy
gis = GIS('url', 'username', 'password')
sdf_to_append = pd.DataFrame.spatial.from_featureclass(r"path to gdb feature class")
#search for the hosted feature layer/service
featureLayer_item = gis.content.search('type: "Feature Service" AND title:"xxxxx"')
#access the item's feature layers
feature_layers = featureLayer_item[0].layers
#query all the features
fset = feature_layers[0].query()
features_to_be_added = []
template_hostedFeature = deepcopy(fset.features[0])
for index, row in sdf_to_append.iterrows():
x = sdf_to_append.loc[index]['SHAPE']['x']
y = sdf_to_append.loc[index]['SHAPE']['y']
new_feature = deepcopy(template_hostedFeature)
input_geometry = {'y':float(y), 'x':float(x)}
output_geometry = geometry.project(geometries = [input_geometry],
in_sr = 3857,
out_sr = 3857,
gis = gis)
# assign the updated values
new_feature.geometry = output_geometry[0]
new_feature.attributes['HoleID'] = row['HoleID']
new_feature.attributes['Project'] = row['Project']
new_feature.attributes['InterFrom'] = row['InterFrom']
new_feature.attributes['InterTo'] = row['InterTo']
new_feature.attributes['Grade'] = row['Grade']
new_feature.attributes['GramMetre'] = row['GramMetre']
new_feature.attributes['RegoProf'] = row['RegoProf']
new_feature.attributes['MidPoint'] = row['MidPoint']
new_feature.attributes['IntercptNo'] = row['IntercptNo']
new_feature.attributes['Overlap'] = row['Overlap']
new_feature.attributes['EndDate'] = row['EndDate']
new_feature.attributes['EAST'] = row['EAST']
new_feature.attributes['NORTH'] = row['NORTH']
new_feature.attributes['RL'] = row['RL']
new_feature.attributes['Width'] = row['Width']
features_to_be_added.append(new_feature)
feature_layers[0].edit_features(adds = features_to_be_added)
print("Hosted feature layer is updated with gdb feature class!")
I hope that's helpful.
... View more
09-14-2020
11:37 PM
|
2
|
0
|
5088
|
POST
|
Krish V, I reckon there is a bug in ArcGIS API for Python at the moment for enabling popups when a layer first time is added to a webmap. To do a workaround, I just found out that you need to first enable popups manually and save the web map. Then when you run the code with layer.update({'disablePopup':True}) which makes all popups disabled. After that, set 'disablePopup' to False and run the code again. This fixes the enabling and disabling popups via the code.
... View more
09-14-2020
08:28 PM
|
3
|
1
|
2458
|
POST
|
Hi Mark Sanford, Is it possible for you to share the shapefile or at least part of it (an extract) so I can work on it?
... View more
09-14-2020
07:19 PM
|
0
|
1
|
657
|
POST
|
Hi Krish V Here's the code to enable popups of layers in a webmap using ArcGIS API for Python: from arcgis.mapping import WebMap
import json
item = gis.content.get("webmap id")
item_data = item.get_data()
layers = item_data['operationalLayers']
for layer in layers:
layer.update({'disablePopup':False})
item_properties = {"text": json.dumps(item_data)}
item.update(item_properties=item_properties)
web_map = WebMap(item)
web_map
... View more
09-14-2020
07:00 PM
|
1
|
1
|
2458
|
POST
|
Ian Hamilton You can rename your scripts. e.g. pro_script.py portal_script.py
... View more
09-14-2020
01:17 AM
|
0
|
0
|
1003
|
POST
|
Hi David Lindsey You can right-click the available connections and select Disconnect to disconnect users from the geodatabase and run the script again. If it still has the locking issue, I recommend including the following script in your script: ws = r'Database Connections\XXX.sde'
users = arcpy.ListUsers(ws)
for user in users:
arcpy.DisconnectUser(ws, user.ID) This releases the locks created by users.
... View more
09-14-2020
12:54 AM
|
0
|
2
|
923
|
POST
|
Hi Victor Tey, Is it possible to share the feature class with the related table on Geonet? You can also send it to my esri email if that's ok.
... View more
09-13-2020
07:04 PM
|
1
|
1
|
906
|
POST
|
Hi Victor Tey, When publishing the feature class, did you enable editing in the share as web layer tool?
... View more
09-13-2020
05:25 AM
|
1
|
3
|
906
|
POST
|
Brilliant! That's what I was looking for. Thanks indeed Than Aung
... View more
08-21-2020
12:29 AM
|
1
|
0
|
2348
|
POST
|
Hi, I'm trying to create an add-in tool to search (with a wildcard preferably) for feature classes or tables in a GDB or an SDE by right clicking on the GDB/SDE with an option Search and list the search result of that GDB/SDE. Once they are listed, add them to the current map when clicked. Than Aung Thanks.
... View more
08-20-2020
11:49 PM
|
0
|
2
|
2426
|
Title | Kudos | Posted |
---|---|---|
1 | 03-17-2024 06:09 PM | |
1 | 11-10-2020 04:59 PM | |
1 | 02-08-2021 09:29 PM | |
1 | 02-17-2021 04:47 PM | |
1 | 03-15-2024 02:35 AM |