Question

Can I use SpatialFilter to determine coordinate system


Badge
I have a series of microstation files that do not have coordinate system definition files, but I know that each one could be in one of 6 possible systems. I am wondering if I can use SpatialFilter to overlay the drawings with boundaries of the coordinate systems/zones to determine the system, then whatever passes through (Iassuming I have to set up a spatialfilter for each system), I could then run through the coordinate setter. I have tested this, but it seems that it is not working in the way I would expect. I am testing on two drawings I know to be in one system, but they are passing through more than one spatialfilter. Is there another way to accomplish what I am trying to do? In each drawing, there is some text in the title block that tells me the system, but I am unsure of how to extract that information and apply back to the drawing.

4 replies

Badge +1
Hi there. I like the idea - you could try reading the 'tags' from the title block if they exist - these might tell you the coordinate system. Otherwise I would use the boundingboxaccumulator to view the extents of the files first, then you can see any overlaps. It might be that they have drawn some features in the sheet space at 0,0 - you could use a creator to define a temporary clipper to remove these features first.
Badge
My problem is I'm not sure how to use the tags to assign the coordinate system to the drawing. The information is definitely in there I can see it as an attirbute - but how do I apply this infomation to all features in the drawing and not just the tags/text nodes themselves?
Badge +1
there are probably a number of ways, but you could use an aggregetor grouped by fme_basename and coordinate system to get a list of all combinations of values, then a featuremerger to join the coordsys to the other features. then set it from an attribute using a CoordinateSystemSetter and use a dataset fanout.
Badge +3
if i would draw france using a dutch projection then i could not detect this by extracting the boundingbox of france..

 

So it totaly depends on the spatial data if this is possible.

 

You would have to make assumptions. (one would be...why t.h. would someone depict france in a dutch system...;0)

 

 

Bu tyou have the data in your titleblock...

 

 

Extract the coord.system from the titleblock. (you have to expose that. Use a datainspector to identitfy wich autocad attribute this is.)

 

 

Expose the basename. Titleblocks shoud have the same basename as do the other layers.

 

Basename is the name of your Autocad dataset, so all objects in all layers it have the same basename.

 

Use a unconditional featuremerger to aply the coord.sys attribute to the object-layers.

 

Then use a coordinatesetter set to this attribute (littel black arrow in coordinatesetterransformer).

 

 

 

( you will have to make sure that the coord.sys name in the titleblock is same as on in the coord.systems available list)

Reply