POST
|
You can update the feature layer with new spatial data frame. For example: # convert merged spatial data frame to feature set
updated_features = merged_sdf.spatial.to_featureset()
# update the feature layer
update_result = feature_layer.edit_features(updates=updated_features)
... View more
11-18-2021
02:17 PM
|
1
|
0
|
643
|
POST
|
You can use Shapely's unary_union to dissolve geometries. For example: from arcgis.features import FeatureLayer
from shapely.ops import unary_union
from arcgis.geometry import Geometry
# query some counties
counties_layer = FeatureLayer('https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_Counties_Generalized/FeatureServer/0')
counties = counties_layer.query(
where="STATE_NAME IN ('California', 'Oregon', 'Washington')",
out_fields='NAME,STATE_NAME',
as_df=True
)
# function to dissolve polygons
def dissolve_polys(polys):
# convert to shapely polygons, using the buffer(0) trick to correct invalid polygons
shapely_polys = [s.as_shapely.buffer(0) for s in polys]
# union polygons
dissolved_poly = unary_union(shapely_polys)
# convert back to arcgis geometry
return Geometry(dissolved_poly.__geo_interface__, spatialReference=polys.iloc[0].spatialReference)
# dissolve county polygons by state
counties_dissolve = counties\
.groupby('STATE_NAME')\
.apply(lambda x: dissolve_polys(x.SHAPE))\
.reset_index(name='SHAPE') NOTE: There can be issues converting between Shapely and Esri polygons, so check your output shapes. In the counties example above, several island polygons (such California's Channel Islands) don't get included in the dissolved polygon.
... View more
11-12-2021
09:45 AM
|
0
|
0
|
1598
|
POST
|
Does excluding the created_user, created_date, last_edited_user, and last_edited_date attributes from the feature make a difference? Those attributes are typically automatically set by the feature service if they were added to the feature service when editing was enabled.
... View more
11-10-2021
08:29 AM
|
0
|
0
|
904
|
POST
|
You can get a list of the unique values in a column from a spatially-enabled data frame, for example: power_users = power_users_layer.query(as_df=True)
existing_users = power_users.username.unique()
Then use the in operator to check if a given user is in that list. If you post the code you have so far we could give some more specific guidance.
... View more
03-01-2020
01:09 PM
|
0
|
0
|
516
|
POST
|
Here's a method I wrote for GeoDataFrame to return an arcgis spatially-enabled dataframe (SEDF): import warnings
from arcgis.geometry import Geometry
from arcgis.features import GeoAccessor, GeoSeriesAccessor
from pandas import DataFrame
from geopandas import GeoDataFrame
def to_SpatialDataFrame(self, spatial_reference=None):
"""Returns an arcgis spatially-enabled data frame.
Arguments:
spatial_reference Either None or a spatial reference integer code.
If None, the spatial reference will be extracted
from the GeoDataFrame if it is defined using an
EPSG code.
"""
if not spatial_reference:
crs = self.crs
epsg_code = crs.to_epsg()
if epsg_code:
spatial_reference = {'wkid': epsg_code}
else:
spatial_reference = {'wkid': 4326}
warnings.warn('Unable to extract a spatial reference, assuming latitude/longitude (EPSG 4326).')
else:
spatial_reference = {'wkid': spatial_reference}
sdf = DataFrame(data=self.drop(self.geometry.name, axis=1))
sdf['SHAPE'] = [Geometry.from_shapely(g, spatial_reference) for g in self.geometry.tolist()]
sdf.spatial.set_geometry('SHAPE')
return sdf
GeoDataFrame.to_SpatialDataFrame = to_SpatialDataFrame
The resulting SEDF can then be published or used to update an existing feature layer.
... View more
03-01-2020
12:30 PM
|
1
|
2
|
2480
|
POST
|
Hmmm, maybe this is the issue. I briefly received this page when attempting to visit the feature layer's web page:
... View more
02-24-2020
02:44 PM
|
0
|
2
|
3648
|
POST
|
I'm trying to query a particular feature layer (https://www.visalia.city/server/rest/services/OpenData/CurrentAddresses/FeatureServer/0) but receive a JSONDecodeError. Here's my code and result: from arcgis.features import FeatureLayer
adds_layer = FeatureLayer('https://www.visalia.city/server/rest/services/OpenData/CurrentAddresses/FeatureServer/0')
adds = adds_layer.query()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/features/layer.py", line 1019, in query
record_count = self._query(url, params, raw=as_raw)
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/features/layer.py", line 1960, in _query
raise queryException
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/features/layer.py", line 1930, in _query
postdata=params, token=self._token)
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/gis/__init__.py", line 10101, in _token
self._hydrate()
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/gis/__init__.py", line 10071, in _hydrate
self._refresh()
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/gis/__init__.py", line 10038, in _refresh
raise e
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/gis/__init__.py", line 10033, in _refresh
dictdata = self._con.post(self.url, params, token=self._lazy_token)
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/site-packages/arcgis/_impl/connection.py", line 1148, in post
resp_json = json.loads(resp_data)
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/jrmatchett/opt/anaconda3/envs/arcgis17/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
I can access and query the layer just fine via its webpage or when adding it to a web map. Accessing some other feature layer properties, such as properties and metadata, generates the same error. I experience the issue when using either versions 1.6.2 or 1.7.1 of the arcgis python API.
... View more
02-24-2020
01:20 PM
|
0
|
3
|
4066
|
POST
|
I was having the same issue and this post on GIS Stack Exchange led me to the solution. The post data needs to be passed as a dictionary with an 'addresses' key and the records converted to a JSON string as its value. Using your example: import json
r = requests.post(url=URL, params=params, data={'addresses': json.dumps(addresses)})
... View more
01-06-2020
07:53 PM
|
0
|
0
|
1192
|
POST
|
Here's a useful post on the various date/time query formats for feature services: Querying Feature Services: Date-Time Queries
... View more
11-11-2019
03:16 PM
|
0
|
0
|
1863
|
POST
|
It seems like something became corrupted with the layer's popup. I changed the popup type from "A list of field attributes" to "A description from one field" and was able to again select points in Collector. I then changed the popup back to "A list fo field attributes" and selection continues to work.
... View more
07-30-2019
10:28 AM
|
0
|
0
|
1375
|
POST
|
I am experiencing this issue also, although on iPhone. For about a day or so, I could successfully select and edit features, then all of a sudden it stopped working. I tried creating a new feature layer, and again it initially worked then stopped. I tried reinstalling the Collector app, but no difference. I'm also unable to select features in the Explorer app. However, the Collector Classic app still works properly.
... View more
07-29-2019
10:34 AM
|
0
|
0
|
1375
|
POST
|
Yes, you can query the features you want, access the SpatialDataFrame, and export to a shapefile. For example: layer = item.layers[0]
features = layer.query('created_date >= CURRENT_TIMESTAMP - 7')
features.sdf.spatial.to_featureclass('./output.shp') The output shapefile will be saved locally in this case.
... View more
06-21-2019
08:27 AM
|
0
|
0
|
2521
|
POST
|
Yes you can add an image to your content using the ArcGIS API for Python. For example: from arcgis import GIS
gis = GIS(username='username', password='password')
image_item = gis.content.add(
item_properties={'type': 'Image'},
data='path_to_image_file'
)
... View more
05-04-2019
02:43 PM
|
0
|
0
|
358
|
POST
|
I was able to accomplish this for my organization's AGOL portal, but had to subclass and modify some methods of the GIS, Portal, and ArcGISConnection classes so they could handle an existing token. Here's the code. It's doing some other things like using the selenium package to automate SAML authentication, but focusing on how the tokens parameter and existing_tokens variable are being handled may give you some leads for your situation.
... View more
04-24-2019
09:58 AM
|
0
|
0
|
1627
|
POST
|
Does converting the SpatialDataFrame to a FeatureSet work? subset_map.add_layer(output.to_featureset(), { "renderer":"ClassedColorRenderer", "field_name":"stress_likelihood" })
... View more
06-09-2018
04:26 PM
|
0
|
0
|
705
|
Title | Kudos | Posted |
---|---|---|
1 | 11-18-2021 02:17 PM | |
1 | 06-09-2018 12:22 PM | |
1 | 03-01-2020 12:30 PM | |
1 | 03-07-2018 10:56 AM | |
1 | 06-08-2018 11:03 PM |
Online Status |
Offline
|
Date Last Visited |
04-13-2024
07:45 PM
|