Hi Jamal,
The AreaOnAreaOverlayer or the Clipper can be used in general.
I think you've used them already ...
Takashi
Thanks Takashi.
The issue here is that the FME fails to produce correct output while the ArcGIS does succeed with same input layers.
All what I wanted to do is to extract the Roads layer from the boundary and Landuse
Roads = Boudnay - Landuse
In the ArcGIS, the model (with Intersect and Erase tools) produces correct result for the roads
In the FME, with same input (Landuse and Boundary), fails to produce proper output
Principally, I switched from the ArcGIS to FME due to that that the ArcGIS doesn’t read the Hatches of AutoCAD. But it sounds that I’m now in a sea of troubles in the FME.
My approach at my work is simple"
The hatches of Landuse are converted to polygons
The hatch of the Boundary is converted to polygon
The Roads are extracted by subtracting the polygons of Landuse from the polygon of Boundary
Why this should be exhaustive?
In general, geometric manipulations by a soft ware can be performed in a limited precision, calculation is not always mathematically exact. I guess your issues are mainly related to the precision of coordinates.
If you lower the precision (CoordinateRounder), both the Clipper and the AreaOnAreaOverlayer may work correctly.
Many thanks Takashi,
Could you please advise which values should I provide for X and Y to have lower precision such that the Clipper can work?
I guess map unit of your data is meter, so maybe 3 or 4 would be enough (i.e. 1 mm or 0.1 mm precision). Anyway, apply trial-and-error until a preferable result is obtained.
I got this result using the above workflow and your data.
Hi,
in addition to the Snapper or the CoordinateRounder, also consider using the ArcSDEGridSnapper (
http://fmepedia.safe.com/articles/FAQ/What-is-the-ArcSDEGridSnapper) to pre-process your data.
I think Takashi is spot on regarding the difference in precision. Remeber that ArcGIS internally uses a "snapping grid" based on the feature class resolution settings, whereas FME will use the full precision, which can lead to results such as this.
David
Thank you Takashi and David for the prompt help and support.
At the end, there is no way to extract the Roads from the Boundary and Landuse (Roads = Boundary – Landuse) in the FME.
Neither CoordinateRounder nor ArcSDEGridSnapper could save the problem
My approach now to extract the Roads is:
• The Boundary and Landuse are extracted from the AutoCAD using the WorkBench
• The Roads is extracted from the Boundary and Landuse (Roads = Boundary – Landuse) using the ArcGIS
None of these two software can do this job in its own.
Do I really need a workbench and model to extract the Roads? FME and ArcGIS?
CAD file:
http://www.mediafire.com/download/4d9y2mc1z0ed7bl/Jifna_Ramallah_UrbanMasterPlan_02.dwg
Really? In my environment, both CoordinateRounder and ArcSDEGridSnapper seem to bring a preferable result (FME 2014 SP1 build 14287, Windows 7).
I think that the difference between ArcGIS and FME was mainly caused by precision of coordinates. As David mentioned, ArcGIS processes geometries with certain resolutions, but FME isn't so. The ArcSDEGridSnapper converts the source geometries into ones with ArcGIS resolutions.
Very much appreciated Takashi.
I’m still having the same error despite the fact I have developed the same workbench as yours.
My windows is 8.1 and FME is 2014
What other issues should I consider?
If I “disable” the clipper the workbench works fine and produce the Boundary and Landuse
There were self-intersecting Landuse polygons in your data. How about repairing them with the GeometryValidator (Issue: Self-intersections in 2D) before clipping?
and there seems to be some collection type geometries. It might be better to decompose input geometries using the Deaggregator.
I am wondering,
When u add the dwg reader, do you read all of it?
I only read the 2 layers involved, and us coordinaterounder and arcsdesnapper and it clips fine. No error reporting, using fme2013sp2.
Or just buffer by -0.01 (no coordinaterounder and arcsdesnapper needed then) Better result.
I also wonder if those files are created in Arcmap exported to Autocad and hatches added?
That is a messy dwg.... I checked it in Autocad..
Gio
Many thanks Takashi and GIO for the help,
I have used all the transformer below, nevertheless, it doesn’t work
1. GeometryValidator
2. Deaggregator
3. ArcSDEGridSnapper
4. CoordinateRounder
5. Bufferer
I do agree with you GIO. The AutoCAD files that we have are not clean. But at the end of the day, all what I need is just:
1. Extract the layer of Landuse from the hatch
2. Extract the Boundary layer from the hatch
3. And then extract the Roads by subtracting the Landuse from the Boundary (Raods = Boundary – Landuse).
My issue now is that it does work if I use the FME just to extract the Landuse and Boundary from the AutoCAD and then to use the Model of the ArcGIS to extract the Roads.
With your valuable help, i need to see if I can do it all in the FME to avoid doing it in two software.
Is that still possible?
More than one GoemetryValidator might be necessary.
Be aware that there is no cure-all for repairing dirty geometries. All depends on the actual data condition. In order to find out a suitable solution, you will have to inspect your data condition in more detail.
Thanks Takashi.
Unfortunately, it doesn’t work. Still have the same error.
In the ArcGIS, three types of error are found and REPAIRED.
1. WARNING 000986: C:\\Users\\jamal\\AppData\\Local\\Temp\\arc4077\\LandusePolygons1.txt contains the full list of non simple features.
2. WARNING 000461: Repaired feature 13 because of self intersections
3. WARNING 000107: Deleted feature 348 because of empty geometry
Then how the ArcGIS can solve these problems while the FME fails? I have applied all the commands that you have generously provided but with no luck
What I’m supposed to do at this stage?
I uploaded my workspace example here. Check if the error will occur.
https://safecommunity.force.com/069a0000003eLzS
When you use the GeometryValidator, you have to select issue(s) which should be validated in the parameters dialog. How did you set parameters of your GeometryValidators?
Reparing seffintersection...on basis of what criteria?
You should only have them identified/flagged and then manualy correct these. FME can do the flagging using selfintersect2D in the geometryvalidator.
Empty geometry is called Null geometry in fme Validator.
And the txt warning is a log if im not mistaken.
This dwg cannot be fully reparried.
I tried to aquire all boundaries using autocad, but some parts are missing. U can see for instance the large "striped" part. Big gaps in landuse boundaries and roadnetwork.
Also the boundary it self seems to be "drawn" in without using snapping or tracing, it does not match, it crosses or overlaps.
I think best to skip repairs, just extract it as best as u can, wich i think is using dissolve and bufferer. Then do area calculate, remove area < 1 or so. Use spikeremover at high angle.
Rebuild boundarylayer.
Then export to Arcmap and manualy correct other parts of roadnetwork.
Then when its clean, use clipper.
Have funs!
Gio
Thank you very much Takashi and GIO for the massive help.
Perfect… perfect… perfect…Takashi. It appears to work fine now with the workbench you have already shared. I have tested it with the most “dirty” AutoCAD files and it worked like a charm.
I’ll let you know if it fails in the future as we have tens of these “dirty” AutoCAD files.
Sorry but other issues are still there.
As the output of the workbench is stored in a ESRI feature class, this feature class is copied and pasted to other feature class that contains all urban master plan.
In the CAD file below, I got an error as I wanted to copy the content of the feature class to the feature class that contains all urban master plan.
http://www.mediafire.com/download/wsb6zyrmv9o0241/Yasouf_Salfeet_MasterPlan_02.dwg
I applied the command “repair geometry” in the ArcGIS (to the generated feature class from the FME) then I was able to copy and paste it
What might be the issue here?
In other cases, we still get the error below as we copy and paste the content of the feature classes generated by the workbench of the FME to the ArcSDE Geodatabase
Probably you will have to clean up the polygons before clipping.
There isn't almighty way for cleaning up dirty geometries, but we've suggested several approaches for your previous similar questions. e.g. Snapper, SliverRemover, AncheredSnapper, SpikeRemover etc.. I think some of them would be effective also this time.
My issue here is how one command in ArcGIS can replace all of these commands in FME? How come the “Repair Geometry” tool of the ArcGIS is sufficient to do all of this in one go?
Also, integrating other commands like the ones shown below could introduce other misinterpretation in converting the data from CAD to ArcGIS. Then, what is the power of the “Repair Geometry” tool in the ArcGIS that can replace of all of these commands of the FME?
In this case, I’m still dependent in applying the “Repair Geometry” tool for whatever produced by the workbench of the FME
Am I correct?