Select to view content in your preferred language

Convert an internet tiled layer to a shapefile in Pro?

841
7
Jump to solution
04-01-2024 02:27 PM
KatieGuetz
New Contributor II

Hello. I'm using ArcPro and am trying to acquire data from this website: https://geodataservices.wdfw.wa.gov/hp/fishpassage/index.html.

What I'm finding is that the data I need (US Forest Service Culverts) is an Internet Tiled Layer and I'm not finding any tools in Pro that can convert this file format (pitemx) into a shapefile (so that I can edit, etc.). 

In the attribute table for this on the geodataservices website there is no geographic data that I can find, so perhaps I'm out of luck?

Does anyone have any experience with this?

0 Kudos
3 Solutions

Accepted Solutions
SteveCole
Frequent Contributor

The map service from FS in question is this:

https://apps.fs.usda.gov/fsgisx02/rest/services/r06/r06_Culverts/MapServer 

What you can do is go to that URL and click on the link for the lone layer (S_R06.FishBarrier_Culvert).

From there, scroll to the bottom and click the Query link. That will open a new page. Enter these parameters:

Where clause: "1=1"

Out fields: "*" (just an asterisk)

Format: JSON

Now click Query (Get) to have it query the REST service. It will return to your browser window all features with all atributes, in JSON format. Save all that text as a JSON file and then you can use the JSON conversion tool in ArcGIS Pro to convert it to a dataset.

The only caveat here is that there's probably a max query record return count of 2,000 so if there are more than 2,000 features in that layer, you'll only get the first 2,000.

Steve

View solution in original post

0 Kudos
SteveCole
Frequent Contributor

It does. On the query page, you'll notice at the top a prompt for input geometry. This is where you can specify a bounding box to constrain your selection to (you would keep the geometry type to ENVELOPE). It's been too long since I've used this method so I'm fuzzy about using it. There's a little bit of an explanation in the REST API documentation but perhaps there's something posted here in forums you can search out in the REST API community

View solution in original post

0 Kudos
SteveCole
Frequent Contributor

Actually, it's not that hard. The input in the Input Geometry box can simply be a XMIN,YMIN,XMAX,YMAX list of coordinates, separated by commas. Below is what I used to query all the records found on the Olympic Peninsula:

rest_inputGeometry_ex.jpg

I used WGS 1984 as the spatial reference for my lat/longs (that's the 4326 number that is specified). Just figure out your bounding box and use those values which should give you what you need.

If you're still hitting the 2,000 record limit, your other alternative is to do a series of consecutive queries based on OBJECTID so..

OBJECTID >= 0 AND OBJECTID <=2000

OBJECTID >=2001 AND OBJECTID <=4000

etc....

Do it all in one session so the data isn't updated and changes the ObjectIDs. You'll have to keep track of the record count as you go so you'll know when you have all the records.

View solution in original post

0 Kudos
7 Replies
SteveCole
Frequent Contributor

The map service from FS in question is this:

https://apps.fs.usda.gov/fsgisx02/rest/services/r06/r06_Culverts/MapServer 

What you can do is go to that URL and click on the link for the lone layer (S_R06.FishBarrier_Culvert).

From there, scroll to the bottom and click the Query link. That will open a new page. Enter these parameters:

Where clause: "1=1"

Out fields: "*" (just an asterisk)

Format: JSON

Now click Query (Get) to have it query the REST service. It will return to your browser window all features with all atributes, in JSON format. Save all that text as a JSON file and then you can use the JSON conversion tool in ArcGIS Pro to convert it to a dataset.

The only caveat here is that there's probably a max query record return count of 2,000 so if there are more than 2,000 features in that layer, you'll only get the first 2,000.

Steve

0 Kudos
KatieGuetz
New Contributor II

Thanks for this help, Steve! I was able to get the JSON file and convert it into a dataset in Pro. As you noted, the dataset has 8,306 features so I am missing a chunk of the data I'm hoping to get. That said, I don't need all 8,306 of those features, but just a subset located within two watersheds. Do you know if your method above has any way to include a geography?

0 Kudos
SteveCole
Frequent Contributor

It does. On the query page, you'll notice at the top a prompt for input geometry. This is where you can specify a bounding box to constrain your selection to (you would keep the geometry type to ENVELOPE). It's been too long since I've used this method so I'm fuzzy about using it. There's a little bit of an explanation in the REST API documentation but perhaps there's something posted here in forums you can search out in the REST API community

0 Kudos
KatieGuetz
New Contributor II

These resources are helpful, thank you. I've never used the REST service for a query so I am having some trouble on the  constraining to a geography part. Just to make sure I'm understanding, I should be able to use this Culverts query (map service) with an Input Geometry from a different layer entirely, is that correct? Additionally, I'm wondering if you have any tips on using the Extent or Domain information from the layer I'd like to use to constrain the geography? Both are in meters, and I'm not finding anything on the coordinate format that API reads in the Input Geometry box. I've attached a photo, if there's anything you can discern from what I'm looking at?

0 Kudos
SteveCole
Frequent Contributor

Actually, it's not that hard. The input in the Input Geometry box can simply be a XMIN,YMIN,XMAX,YMAX list of coordinates, separated by commas. Below is what I used to query all the records found on the Olympic Peninsula:

rest_inputGeometry_ex.jpg

I used WGS 1984 as the spatial reference for my lat/longs (that's the 4326 number that is specified). Just figure out your bounding box and use those values which should give you what you need.

If you're still hitting the 2,000 record limit, your other alternative is to do a series of consecutive queries based on OBJECTID so..

OBJECTID >= 0 AND OBJECTID <=2000

OBJECTID >=2001 AND OBJECTID <=4000

etc....

Do it all in one session so the data isn't updated and changes the ObjectIDs. You'll have to keep track of the record count as you go so you'll know when you have all the records.

0 Kudos
KatieGuetz
New Contributor II

Steve- thanks for your help on this. I was able to get all the data I need with the above help!

SteveCole
Frequent Contributor

Glad you got what you needed!

0 Kudos