Parcel Edge Attributes Using CityEngine

664
7
Jump to solution
06-29-2020 06:21 PM
DanCampbell
New Contributor

I've been able to successfully bring my parcels that I will be using in ArcGIS Urban (approximately 94,700) into CityEngine and calculate pretty good edge attributes. Where I am running into trouble is getting the parcels back into Urban. 

I first tried directly loading the parcel shapefile directly into CityEngine and calculating the edge attributes. When I tried to export the updated version, it took well over an hour to create the new shapefile, and even when it appeared to have completed no file was actually created. I tried a few more times, and after hours of processing it finally created a file, but I was presented with an error message when I tried to open it in ArcGIS Pro, or to add it to ArcGIS Online.

I thought the issue might be a compbination of the number of parcels and the numerous vertices along curved edges so I tried exporting only a smaller selection of parcels. That worked...sometimes. The first set of data opened in ArcGIS Pro and I could see that edge orientation data was present and that there were multiple columns with the mttns_* and strctg_* headings. The second small extract worked as well, but it only included the "Shape" column and no attribute info at all. Trial and error suggested that reducing either the complexity of the parcel polygons seemed to help. I expect I will probably be able to combine all these smaller extracts in ArcGIS Pro but I wonder if the resulting file will still create difficulties when I try to bring it into Urban. Merging two very small extracts took about 45 minutes, so I'm not sure this is a viable approach.

I've also tried creating a scenario in Urban that includes all the City Parcels and opening it in CityEngine. Once again, there is no issue creating the edge attributes. The problem is that the Syncronize All Scenarios starts OK, but eventually times out.

So, I'm guessing I must be doing something wrong, or I am running up against the maximum number of parcels that can be handled efficiently. Any advice on how to best proceed would be greatly appreciated.

Dan Campbell

0 Kudos
1 Solution

Accepted Solutions
Till_Schmid
Esri Contributor

Hi Dan Campbell

Thank you for your question! I am glad, that you were able to calculate the edge information for all the parcels in CityEngine. Unfortunately, in CityEngine it is currently not possible to export parcel edge attributes in the way Urban can read them, but we are working on that.
It is possible to connect to an Urban Plan in CityEngine, calculate the edge information, and synchronize the attributes back to ArcGIS Urban. The detailed workflow is described here: ArcGIS Urban integration—ArcGIS CityEngine Resources | Documentation. However, this is currently only possible on a Plan level, and not for the whole Urban model. 

A temporary workaround for your workflow can be described as follows:

  1. Load in your parcels in the data manager (without edge information)
  2. Create a plan which covers the whole city (this might take a while depending on the number of parcels)
  3. Connect to that plan in CityEngine (see the link above for more information)
  4. In CityEngine, select "Scenario 1", select all parcel shapes and calculate the edge attributes
  5. In CityEngine, synchronize all scenarios with ArcGIS Urban (toolbar: ArcGIS Urban > "Synchronize all Scenarios")
  6. Go to ArcGIS Online and navigate to the folder where your Urban Model is stored. Open the hosted Feature Layer of the Urban Design Plan (the Feature Layer has the same name as the plan you created before in Urban)
  7. You see all layers stored in your Plan (Zones, Overlays, Parcels, etc.). Export the parcels sublayer as a file geodatabase (not as a shapefile due to field width restrictions)
  8. The layer contains parcels for Existing Conditions (without edge information) as well as for Scenario 1 (with edge information). You need to delete the duplicate parcels from existing conditions (all features with an empty EdgeInfos field). You can do this for example in ArcGIS Pro: download the file geodatabase from the previous step to your computer, edit the layer in ArcGIS Pro and save the changes.
  9. Upload the new file geodatabase to ArcGIS Online and publish the layer as a hosted Feature Layer.
  10. Open your Urban Model, open the Data manager, delete the existing parcels and import the new parcels with edge information into Urban (select the Feature Layer from the previous step)
  11. Now you have all parcels with their edge information in ArcGIS Urban. You can delete the temporary Plan you first created and use Urban as you wish.

We are aware, that this workaround is a bit cumbersome and we are working on a better solution.

Please let me know if you have any questions.

-Till

View solution in original post

0 Kudos
7 Replies
DanCampbell
New Contributor

Some of my problem has been resolved. I found that if I reduced the vertex count of some of the larger polygons I was finally able to export the parcel shapefile and open it in ArcGIS Pro and ArcGIS Online. So, small victories!

Where I remain stumped is getting the parcel edge attributes into Urban. In loading the Parcel layer I see that I am required to match fields. No problem doing so with Population, Jobs and Households.  For Edges, however, there doesn't seem to be a single field that I can select that contains the edge data. What is available in the shapfile exported form CityEngine is information spread across numerous fields starting with rnttns which contains, front, rear, and side attributes.

When I open up a scenio for which I edited the parcel edges directly in Urban I noticed that there is a field called EdgeInfos that seems to contain the consolidated edge data that Urban needs. I couldn't find any options in CityEngine export function that would enable me to create this field.

Thanks for any assistance on this,

Dan

0 Kudos
Till_Schmid
Esri Contributor

Hi Dan Campbell

Thank you for your question! I am glad, that you were able to calculate the edge information for all the parcels in CityEngine. Unfortunately, in CityEngine it is currently not possible to export parcel edge attributes in the way Urban can read them, but we are working on that.
It is possible to connect to an Urban Plan in CityEngine, calculate the edge information, and synchronize the attributes back to ArcGIS Urban. The detailed workflow is described here: ArcGIS Urban integration—ArcGIS CityEngine Resources | Documentation. However, this is currently only possible on a Plan level, and not for the whole Urban model. 

A temporary workaround for your workflow can be described as follows:

  1. Load in your parcels in the data manager (without edge information)
  2. Create a plan which covers the whole city (this might take a while depending on the number of parcels)
  3. Connect to that plan in CityEngine (see the link above for more information)
  4. In CityEngine, select "Scenario 1", select all parcel shapes and calculate the edge attributes
  5. In CityEngine, synchronize all scenarios with ArcGIS Urban (toolbar: ArcGIS Urban > "Synchronize all Scenarios")
  6. Go to ArcGIS Online and navigate to the folder where your Urban Model is stored. Open the hosted Feature Layer of the Urban Design Plan (the Feature Layer has the same name as the plan you created before in Urban)
  7. You see all layers stored in your Plan (Zones, Overlays, Parcels, etc.). Export the parcels sublayer as a file geodatabase (not as a shapefile due to field width restrictions)
  8. The layer contains parcels for Existing Conditions (without edge information) as well as for Scenario 1 (with edge information). You need to delete the duplicate parcels from existing conditions (all features with an empty EdgeInfos field). You can do this for example in ArcGIS Pro: download the file geodatabase from the previous step to your computer, edit the layer in ArcGIS Pro and save the changes.
  9. Upload the new file geodatabase to ArcGIS Online and publish the layer as a hosted Feature Layer.
  10. Open your Urban Model, open the Data manager, delete the existing parcels and import the new parcels with edge information into Urban (select the Feature Layer from the previous step)
  11. Now you have all parcels with their edge information in ArcGIS Urban. You can delete the temporary Plan you first created and use Urban as you wish.

We are aware, that this workaround is a bit cumbersome and we are working on a better solution.

Please let me know if you have any questions.

-Till

View solution in original post

0 Kudos
DanCampbell
New Contributor

Thank you Till,

I was was starting to suspect that the specific round-trip functionality wasn't there, and I'm glad to hear you are working on implementing it. The work-around you suggest will do the job for me, and I almost got there on my own. What confused me was that when I brought the plan into CityEngine the parcel view in the Inspector didn't expose any edge information. I ran the Compute Edge Attributes routine, but I didn't think it was doing anything because there was no view of any changes in the edge orientation. If it gests the job done cumbersome is OK with me.

In using the plan method to update eges, must it be done all at once with one big plan, or is it still possible to run a series of smaller plans and assemble the new parcel base in ArcGIS Pro?

Thanks again,

Dan

0 Kudos
Till_Schmid
Esri Contributor

Hi Dan

Yes, it should be possible to run a series of smaller plans in CityEngine and afterward assemble the parcels in ArcGIS Pro. 

Regarding the edge attributes in the Inspector of CityEngine: The attributes should be visible when first clicking on a parcel and then selecting a parcel's edge. After running "Compute Edge Attributes" you should be able to see the changes there.

Let me know if you have any other questions.

-Till

0 Kudos
DanCampbell
New Contributor

Hi Till,

It just so happens I do have another question. I've successfuly generated edge attributes in CityEngine and created a new parcel layer that I have loaded into Urban, matching the Edges field to the EdgeInfos field. My problem is that when I create a new Zoning Plan all the selected parcel edge attributes in Scenario 1 are still set to the default of "side", and not the the new attributes generated in CityEngine. 

Opening that new Zoning Plan in ArcGIS Online shows the selected parcel EdgeInfos attributes to be: [{"orientation":"front","adjacencies":[]},{"orientation":"side","adjacencies":[]},{"orientation":"rear","adjacencies":[]},{"orientation":"side","adjacencies":[]}]. So, the data in the table looks right with the respective front and back edges being listed, but it is not being reflected in Urban. Am I missing a step to get the mapping to work correctly?

Thanks again,

Dan

0 Kudos
BrianSims1
New Contributor

Dan,

I just compared the edge info JSON syntax to that assigned to parcels in one of my instances.  I do not see any issues with your edge info JSON syntax.  One thought as to a possible reason for why you still see the default "Side" edge type in your Plan.

Was your process:

1) Compute Edge Attributes in CityEngine,

2) Load the parcels with EdgeInfo into Urban,

3) Create new Plan

4) See all parcels with default "Side" edge type?

Or, did you by chance upload parcels a second time into an existing instance with edge info after you already had an existing Plan? 

If this is the case, you will not see the newly loaded parcels with edge info in your already existing plan.  You will see parcels with correct edge info if you create a new Plan.  Reason being, when Plans and Projects are created, the data are copied from the parent database to a new hosted design database.  When you load parcels via the Urban data loader, these data are loaded into the parent database but not any existing design databases.  

Curious if this explains the issue you are seeing?

0 Kudos
DanCampbell
New Contributor

Hi Brian,

I think that in all the testing I was doing I might have run into the situation you note. At one point I noticed that there were duplicates of some of fields in my plan which might have been caused by data being copied twice. However, I believe my further testing was with a fresh plan and I still had the issue. Thanks for the heads-up, and I'm going to check again just to be certain. 

Dan

0 Kudos