Hi Peppe,

Just wonder why you want to retrieve authorities from srid ?
If it is important, why not adding authority in the srid.txt file ?
It is quite impossible to get authority from code as codes are supposed to be unique for a single authority only. By chance, EPSG is so well-known that most implementions (ESRI, GeoTIFF, PostGIS) take care to use the same code for the same CRS, and add new CRS in a specific range of codes unused by EPSG. But every implementor has its own rules, and what I've found is very confusing.

negative srid : unused, except -1 which used to mean UNKNOWN in postgis 1.x
0 : means UNKNOWN in GeoTIFF and PostGIS 2.x
1-2000 : unused but valid EPSG codes for CRS
2000-32766 : EPSG codes also used by ESRI (WKID), PostGIS, GeoTIFF for the same CRSs... In GeoTIFF, projected CRS codes seem to start at 20000, but smaller EPSG codes exist in EPSG database
        note : SR-ORG codes (1-9000) are overlapping EPSG code range
32767 : user-defined in GeoTIFF implementation ( don't know what is the difference between user-defined and private-user implementation ?)
32768-max :
        GeoTIFF : 32768-65535 : private user implementation
        ESRI : 32768 - 33000 : unused ?
        ESRI : 33000-200000 : ESRI authority
        ESRI : 200000-209199 : ESRI Custom codes
        PostGIS : 32768 - 910000 : ? (can be used for ESRI WKID ?)
        PostGIS : 910000 - 998999 : Custom codes
SpatialReference : EPSG:61000000-69000000 (superseded, not referenced in EPSG database)

GeoTIFF Projection and ProjCoordTrans are other types of beast. They do not define a Coordinate Reference System.

What I would keep :
-1, 0 : UNKNOWN
1-32766 : EPSG registry
33000-200000 : ESRI registry
other : CUSTOM/SRID

Not sure why you distinguish SRID from CUSTOM. Have they different meaning/usage ?

Michaël

Le 03/09/2016 à 19:43, Giuseppe Aruta a écrit :
Maybe I should correct on this way - to save compatibility with geotif

Code :

integer
EPSG : [2000..32767] or [5999999..2147483647]
ESRI : [32999..200000]
GEOTIF PROJECTION: [1..28]*
CUSTOM : [29..1999] or [32769..32999] or [200000..6999999]
NOT DEFINED: [-1]
USER DEFINED: [0] or [32768]

not integer
IGNF:

* See http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/GeoTiff.html <http://www.sno.phy.queensu.ca/%7Ephil/exiftool/TagNames/GeoTiff.html>. The geotif method in Proj Utils class, in the GeoKeyDirectoryTag, scans geographic/geocentric projection if no projected value is recognized

Peppe

2016-09-03 12:22 GMT+02:00 Giuseppe Aruta <giuseppe.ar...@gmail.com <mailto:giuseppe.ar...@gmail.com>>:

    I understand. I don't do any work today. And wait for your commits
    Peppe

    2016-09-03 12:01 GMT+02:00 Michaël Michaud
    <m.michael.mich...@orange.fr <mailto:m.michael.mich...@orange.fr>>:

        Hi Peppe,

        If you're not changing ProjUtils class today, I'll make some
        refactoring.
        Would be nice if you can double check after my commit.

        About test on srid integer, there is not much of a problem.
        Just a small inconsistency betwwen comment and code on CUSTOM
        authority

        Comment :
        CUSTOM : [200000..209199]

        Code :
        EPSG : ]-∞..32768[ or ]5999999..2147483647]
        ESRI : ]32999..200000[
        CUSTOM : [32768..32999] or [200000..5999999]

        Michaël


        Le 02/09/2016 à 16:00, Giuseppe Aruta a écrit :
        Hi Michaël,
        thanks for the suggestions.

        >srid.txt encoding
        I upgraded SVN repository with a UTF-8 version.

        >I noticed that tests done on the srid integer value are not
        consistent between the comments and the code.
        Sorry. I am still  not familiar with some developing
        terminology (and the usage of Java).
        Does it means I should remove those comments from that position?

        >ProjUtils is a very big class and contains redundant code
        Yes. During the long syage of thge class I added many extra
        code. Right now I realized that readSRSFromAuxiliaryFile_1
        method was not used (and I removed from repository). I will
        use your suggestions and make it simpler and smaller,
        following OJ philosophy.

        Thanks again

        Peppe

        2016-09-02 0:05 GMT+02:00 Michaël Michaud
        <m.michael.mich...@orange.fr
        <mailto:m.michael.mich...@orange.fr>>:

            Hi Peppe,

            Thanks for the work. Here are some suggestions.

            I noticed that tests done on the srid integer value are
            not consistent between the comments (and the referenced
            site
            
http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/whnjs.htm#SOAP_Geometry_FindSRByWKID.htm
            
<http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/whnjs.htm#SOAP_Geometry_FindSRByWKID.htm>)
            and the code.

            Also I think there is a problem with srid.txt encoding
            (with the addition of IGNF registry which includes non
            ASCII characters). I suggest that we code the file in
            UTF-8 (it is currently recognized as ISO 8859-1 by my
            IDE) and read it as UTF-8 so that it behaves similarly on
            windows or linux (using *InputStreamReader
            
<http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#InputStreamReader-java.io.InputStream-java.lang.String->**(**InputStream
            
<http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html>**in,**String
            <http://docs.oracle.com/javase/8/docs/api/java/lang/String.html>** 
charset*Name))

            ProjUtils is a very big class and contains redundant
            code. Maybe a few helper methods would help
            - getSRSDef(int srid) // to get SRSDef from SRID
            (computed 3 times in the file)
            - normalizeSRSName(String srs) // to normalize SRSName
            writing (whitespaces, separators...)
            - getSRSDef(String prjName) // read from srid.txt
            ...

            In readSRSFromAuxiliaryFile_1 and
            readSRSFromAuxiliaryFile methods, tests could be
            organized this way

            projectSourceFilePrj
            projectSourceRFilePrj // not used in
            readSRSFromAuxiliaryFile_1
            projectSourceRFileAux

            // List<String> fileList : useless !

            if (projectSourceFilePrj.exists()) {/**/}
            else if (projectSourceRFilePrj .exists()) {/**/}
            else if (projectSourceRFileAux.exists()) {/**/}
            else

            // if (!prjname.isEmpty()) {/* */} : no more needed if
            you wrote a getSRSDef(String prjName) method

            Michaël


            Le 01/09/2016 à 07:23, Giuseppe Aruta a écrit :
            Hi all,
            sorry for the long time I took to answer.
            I understood the difficulties. My idea was limited to
            work on the measurement part of Coordinate systems
            (something that I started to do on my Measurement
            plugin). The reprojection part was put aside.
            After reading the opinions of all, I decided to abandon
            the idea to a add projection ID to the Task and to limit
            the work in small steps only at layer level, without
            core modifications.
            I added to projection detection of layers (LayerProperty
            and RasterLayerProperty plugins) the capability to show
            the relative measure unit.
            It was easy as it required only some extra info on the
            SRID registry file
            (org.openjump.core.ccordsys.utils.srid.txt)
            In the future I will work on modified (measurement,
            zoom, scale) plugin that detect that measure unit ,
            Measure Plugin will remain the main place for this work.
            Best regards
            Peppe

            @Michael I added on SRID registry file also IGNF and IGN
            Gèoportail codes, trying to set the most possible common
            "synonimous". But I didn't test it as I didn't find
            datas on that Authority. Could you give a quick look,
            please. I took the informaion ffor IGN Gèoportail form
            this page (http://www.wms.lautre.net/projgp.html
            <http://www.wms.lautre.net/projgp.html> - 2011)

            2016-08-04 23:32 GMT+02:00 Michaël Michaud
            <m.michael.mich...@orange.fr
            <mailto:m.michael.mich...@orange.fr>>:

                Hi Peppe,

                Your explanation is clear.

                I tend to be on the same opinion as Jukka on this
                topic because I
                generally use OpenJUMP as a toolbox, and I generally
                know exactly what I
                want to do with my data.

                But I admit that to visualize heterogeneous data,
                OpenJUMP has not much
                to offer to the user to solve projection problems,
                and the beginner can
                be bothered by the lack of assistance.

                Here are a few recommandation :

                1 - Projection issues may be tricky. It is magic as
                long as the only
                need is visualization, but if the user need to
                reproject his dataset, he
                must be aware of the consequences (reversibility,
                topology
                consistency...). Last time I have been screwed by a
                projection problem
                is with FME. I imported shapefiles with a prj in a
                project using the
                "same" projection. It was supposed to be a no-op
                (doing nothing), except
                that FME did a transformation from projection A
                (defined by prj
                parameters) to projection A (defined by internal FME
                parameters), which
                resulted in an invisible switch of  a few
                micrometers difficult to see,
                but which broke the consistency with another layer
                (which did not follow
                the same process). Of course this can be avoided in
                FME, but this is
                just an example to illustrate that without a great
                care, something
                supposed to be magic may become dramatic.

                2 - From my point of view, one of the most difficult
                problem is to be
                able to recognize that two coordinate reference
                system with different
                origins (different registries, different formats,
                different libraries,
                different definitions) represent the same thing (see
                the above problem
                with FME). I think you already worked on that problem.

                3 - Your mail explains quite clearly what already
                exists and where you
                want to go. I think that to anticipate difficulties,
                we can suppose that
                a SRID is associated to the task and try to define
                OpenJUMP behaviour in
                different situations :
                - default behaviour when creating a new task :
                asking for a srid or not
                ? it is a good thing if OJ can infer information
                from prj files or other
                sources, but I don't like having to answer esoteric
                questions before I
                can start working.
                - task without srid : does it take the srid of the
                first layer imported
                ? What if layers without srid are already imported ?
                - can we change the srid of a task if layers with
                srid are already
                imported ?
                - importing a layer with a different srid : 1) the
                layer is just tagged
                (layer srid mismatch task srid), 2) the layer is
                automatically
                reprojected by the renderer ? 3) the user is invited
                to reproject the
                layer ? 4) There are some options to define OpenJUMP
                behaviour
                - how to deal with layers without projection : can
                we import them in a
                task with a srid ? can we edit them ? Do we set the
                task projection to
                the layer projection automatically ?
                - if a reprojected layer is not editable, an
                interesting option would be
                to set the task srid to the selected layer srid (->
                makes the selected
                layer editable, and reproject other layers)
                - etc.

                4- Implementation : no real opinion. Ede's advice
                will certainly make
                the code more flexible, but also a bit more complex.
                And how to
                represent the coordinate system property ? Another
                difficult question.
                We already have SRID represented by an int at the
                geometry level (JTS)
                and a CoordinateSystem at the FeatureSchema level.
                IMHO, the first is a
                bit too lightweight (cannot handle non EPSG crs).
                The second is too
                lightweight if we want to use it to effectively
                transform coordinates
                (cannot handle much transformations) and too
                heavyweight if we just use
                it as a reference to be used by CTS library (or any
                other).


                My 3 cents

                Michael



                Le 03/08/2016 à 15:13, Gmail a écrit :
                > LoopThis thread needs a larger explanation.
                > I try to simplify it.
                > other GIS like Kosmo or GVSig implemented
                Coordinate system framework
                > following these steps:
                > a) first step they add a projection object to the
                task (usually as EPSG or
                > ESRI code). In Kosmo user has to set that. QGIS
                also allows to set Task
                > projection loading that from the first loadedf
                file (with SRID).
                > b) QGIS define the Unit of the task from SRID (
                ex. 4326>degree,
                > 32632>metre) while GvSig And Kosmo require to set
                it manually.
                > c) a projection object is set to each loaded
                layer. This is done reading
                > layer metadata or manually
                > d) if the task and the layer projection object are
                different a
                > transformation should be set. Those software use (
                for vector) proj4
                > libraries. In this step Qgis and newer gvsig
                allows on fly reprojection.
                > e) this transformation is taken into account only
                by layer renderes on the
                > workbench. Which changes geometry before drawing it.
                > This transformation is saved into project file and
                taken into account
                > whenever the project file is loaded.
                > f) Note that Kosmo (and probably Gvsig) doesn't
                allow any spatial operation
                > on reprojected layers. The only way to modify them
                is to save them reprojected.
                >
                > Recently I did few modifications on shape file
                reading in order to expand
                > capability to set layer SRId when reading file.
                Layer properties plugins
                > already have this capability for both raster and
                vector ( included
                > geotif*). Together with database and wfs
                capability to record layer srid we
                > probably get almost point C of my list.
                >
                > My idea is to work on point A and B, integrating
                parts if my measure plugin
                > in to OJ core in order to have measurements\zoom
                when task projection is
                > geographic or possibility that oj display meter or
                feet unit on
                > measurements \ scale bar.
                > The other points can be faced in the future,
                including in fly reprojection.
                >
                > My project:
                > 1) Oj already as a srid registry embedded that I
                added when I defined srid
                > detection capability from auxiliary files. It is a
                simple list of
                > projection, a series of lines with only srid
                number and a proj. description
                > ( ex <32632>;<WGS 84 UTM zone 32>), build using
                proj4 registries and excel.
                > I could expand each line with unit ( ex
                <32632>;<WGS 84 UTM zone 32>;<metre>)
                > 2) expand Task class with srid code and unit. User
                can define manually .
                > 3) modify measure /zoom plugins according units,
                meter, foot, degree ( in
                > this last case I would limit only to wgs84 ) using
                classes fro my measure
                > plugin.
                >
                > Peppe
                >
                >
                >
                >
                >
                > *
                >
                >
                >
                > Inviato con AquaMail per Android
                > http://www.aqua-mail.com
                >
                >
                > Il 03 agosto 2016 12:32:48 edgar.sol...@web.de
                <mailto:edgar.sol...@web.de> ha scritto:
                >
                >> hey Peppe,
                >>
                >> On 03.08.2016 11 <tel:03.08.2016%2011>:11,
                Giuseppe Aruta wrote:
                >>> Hi all,
                >>> The title explains what is my idea. In a
                possible future we can extend OJ
                >>> projection capabilities.  And the 1st step I
                would explore is to add SRID
                >>> code to a task (to centralize possible
                transformations)
                >> can you elaborate?
                >>
                >>> and unit of measurements (retriving from SRID,
                which will affect other
                >>> plugins/tools like measure tools, measure
                area/length, display scales etc,
                >>> especially for Geographic coordinate systems).
                >> same here.
                >>
                >>> I gave a look at Task class , should I implement
                (srid and unit) as
                >>> properties into the associate xml file? Does it
                breaks compatibility?
                >> ..ede
                >>
                >>
                
------------------------------------------------------------------------------
                >> _______________________________________________
                >> Jump-pilot-devel mailing list
                >> Jump-pilot-devel@lists.sourceforge.net
                <mailto:Jump-pilot-devel@lists.sourceforge.net>
                >>
                https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
                <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
                >
                >
                >
                
------------------------------------------------------------------------------
                > _______________________________________________
                > Jump-pilot-devel mailing list
                > Jump-pilot-devel@lists.sourceforge.net
                <mailto:Jump-pilot-devel@lists.sourceforge.net>
                >
                https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
                <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
                >


                
------------------------------------------------------------------------------
                _______________________________________________
                Jump-pilot-devel mailing list
                Jump-pilot-devel@lists.sourceforge.net
                <mailto:Jump-pilot-devel@lists.sourceforge.net>
                https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
                <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>




            
------------------------------------------------------------------------------

            _______________________________________________
            Jump-pilot-devel mailing list
            Jump-pilot-devel@lists.sourceforge.net
            <mailto:Jump-pilot-devel@lists.sourceforge.net>
            https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
            <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
            
------------------------------------------------------------------------------
            _______________________________________________
            Jump-pilot-devel mailing list
            Jump-pilot-devel@lists.sourceforge.net
            <mailto:Jump-pilot-devel@lists.sourceforge.net>
            https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
            <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>


        
------------------------------------------------------------------------------

        _______________________________________________
        Jump-pilot-devel mailing list
        Jump-pilot-devel@lists.sourceforge.net
        <mailto:Jump-pilot-devel@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
        <https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
        
------------------------------------------------------------------------------
        _______________________________________________
        Jump-pilot-devel mailing list
        Jump-pilot-devel@lists.sourceforge.net
        <mailto:Jump-pilot-devel@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
<https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel>
------------------------------------------------------------------------------

_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to