Dear All,
I am writing codes to add more features to an agol hosted point layer using arcgis API for Python. It is a seemingly straightforward task, but I encountered problem to deal with geometry's spatial reference.
the coordinates of my source points and target agol layer are in deferent spatial references system, source is in WJID 4326 and the target is in WKID 3857. Well, I have two questions:
First, could I add feature(s) with different SR to an Agol featureLayer (using featureLayer.edit_features(adds=newFeatureDict). I thought that it could not (I am an old GIS guy). However, the input of new feature has the option for define SR for each feature. It is not mentioned in the documents "the new feature must have the same sr with the target featureLayer. This made me wondering if there is a "internal on the fly transformation" for the method. I tried and the new points landed in African instead to Ohio!
Second, How to use the arcgis.geometry.project to re-project geometry from one sr to another. in the documentation, there is a very simple and straightforward module (arcgis.geometry.project) dedicated for this purpose. But it did not work and returns a error message. I even tried using the example copied from the documentation. it returns the sample error.
from arcgis.geometry import project
input_geom = [{"x": -17568824.55, "y": 2428377.35}, {"x": -17568456.88, "y": 2428431.352}]
result = project(geometries=input_geom, in_sr=3857, out_sr=4326)
Exception: 'NoneType' object has no attribute '_tools'
I called ESRI tech support and as usaul, I am still waiting ...... Please help!
Ming
Solved! Go to Solution.
I hate to be this guy, but when I run your code, I get a successful result.
I haven't modified anything, as you can see.
Where are you running this code?
Also, if the source is a service, you can specify the output SR in the query function, which may help here.
I am glad tht you are the guy and you ran it! At least and module should work!
I ran it in PyCharm and i tried it again. It seems that it need one to login arcgis.gis t run. as soon I added logged in, it works now:
from arcgis.geometry import project
from arcgis.gis import GIS
gis = GIS(url="https://www.arcgis.com", username="me", password="that")
input_geom = [{"x": -17568824.55, "y": 2428377.35}, {"x": -17568456.88, "y": 2428431.352}]
result = project(geometries=input_geom, in_sr=3857, out_sr=4326)
print(result)
I will run it with my data now!
Thanks!
Ming
I hate to be this guy, but when I run your code, I get a successful result.
I haven't modified anything, as you can see.
Where are you running this code?
Also, if the source is a service, you can specify the output SR in the query function, which may help here.
I am glad tht you are the guy and you ran it! At least and module should work!
I ran it in PyCharm and i tried it again. It seems that it need one to login arcgis.gis t run. as soon I added logged in, it works now:
from arcgis.geometry import project
from arcgis.gis import GIS
gis = GIS(url="https://www.arcgis.com", username="me", password="that")
input_geom = [{"x": -17568824.55, "y": 2428377.35}, {"x": -17568456.88, "y": 2428431.352}]
result = project(geometries=input_geom, in_sr=3857, out_sr=4326)
print(result)
I will run it with my data now!
Thanks!
Ming
Hi Josh, do you have an example of how to " specify the output SR in the query function", or can you point me to it in the documentation. I can't find it anywhere 😞
Thanks,
Darren
Hi @DarrenSmith, is this what you're looking for?
arcgis.features module | ArcGIS API for Python
The query method of a FeatureLayer has an out_sr parameter.
Thanks @BlakeTerhune. Yes, I eventually figured it out back in October, but I forgot to post an update. Thanks for taking the time to reply.