001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/model/csct/cs/ConvenienceCSFactory.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003    
004     This file is part of deegree.
005     Copyright (C) 2001-2007 by:
006     EXSE, Department of Geography, University of Bonn
007     http://www.giub.uni-bonn.de/exse/
008     lat/lon GmbH
009     http://www.lat-lon.de
010    
011     This library is free software; you can redistribute it and/or
012     modify it under the terms of the GNU Lesser General Public
013     License as published by the Free Software Foundation; either
014     version 2.1 of the License, or (at your option) any later version.
015    
016     This library is distributed in the hope that it will be useful,
017     but WITHOUT ANY WARRANTY; without even the implied warranty of
018     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
019     Lesser General Public License for more details.
020    
021     You should have received a copy of the GNU Lesser General Public
022     License along with this library; if not, write to the Free Software
023     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
024    
025     Contact:
026    
027     Andreas Poth
028     lat/lon GmbH
029     Aennchenstr. 19
030     53115 Bonn
031     Germany
032     E-Mail: poth@lat-lon.de
033    
034     Klaus Greve
035     Department of Geography
036     University of Bonn
037     Meckenheimer Allee 166
038     53115 Bonn
039     Germany
040     E-Mail: klaus.greve@uni-bonn.de
041    
042     
043     ---------------------------------------------------------------------------*/
044    package org.deegree.model.csct.cs;
045    
046    import java.awt.geom.Point2D;
047    import java.util.ArrayList;
048    import java.util.HashMap;
049    import java.util.List;
050    
051    import javax.media.jai.ParameterList;
052    import javax.media.jai.ParameterListDescriptor;
053    import javax.media.jai.ParameterListDescriptorImpl;
054    import javax.media.jai.ParameterListImpl;
055    import javax.media.jai.util.Range;
056    
057    import org.deegree.model.crs.CSAccess;
058    import org.deegree.model.csct.units.Unit;
059    
060    /**
061     * 
062     * 
063     * @version $Revision: 7513 $
064     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
065     */
066    public class ConvenienceCSFactory implements CSAccess {
067    
068        private static ConvenienceCSFactory factory = null;
069    
070        private CoordinateSystemFactory csFactory = CoordinateSystemFactory.getDefault();
071    
072        private static ParameterListDescriptor pld = getDescriptor( new Object[] {
073                                                                                  "semi_major",
074                                                                                  Double.class,
075                                                                                  ParameterListDescriptor.NO_PARAMETER_DEFAULT,
076                                                                                  null,
077                                                                                  "semi_minor",
078                                                                                  Double.class,
079                                                                                  ParameterListDescriptor.NO_PARAMETER_DEFAULT,
080                                                                                  null, "central_meridian", Double.class,
081                                                                                  new Double( 0 ), null,
082                                                                                  "latitude_of_origin", Double.class,
083                                                                                  new Double( 0 ), null, "false_easting",
084                                                                                  Double.class, new Double( 0 ), null,
085                                                                                  "false_northing", Double.class,
086                                                                                  new Double( 0 ), null, "scale_factor",
087                                                                                  Double.class, new Double( 1 ), null,
088                                                                                  "longitudeOfFalseOrigin", Double.class,
089                                                                                  new Double( 0 ), null,
090                                                                                  "latitudeofFalseOrigin", Double.class,
091                                                                                  new Double( 90 ), null,
092                                                                                  "standard_parallel1", Double.class,
093                                                                                  new Double( 30 ), null,
094                                                                                  "standard_parallel2", Double.class,
095                                                                                  new Double( 40 ), null, "hemisphere",
096                                                                                  Integer.class, new Integer( 1 ), null } );
097    
098        // keys are names (i.e. "EPSG:4326"), values are CoordinateSystems
099        private HashMap<String, CoordinateSystem> systems = new HashMap<String, CoordinateSystem>( 300 );
100    
101        // values are names (Strings)
102        private List<String> names = new ArrayList<String>( 300 );
103    
104        /**
105         * implementation f the singleton pattern.
106         */
107        public static ConvenienceCSFactory getInstance() {
108            if ( factory == null ) {
109                factory = new ConvenienceCSFactory();
110            }
111    
112            return factory;
113        }
114    
115        /**
116         * 
117         * 
118         * @param cs
119         */
120        private void save( CoordinateSystem cs ) {
121            systems.put( cs.getName(), cs );
122            names.add( cs.getName() );
123        }
124        
125        /**
126         * 
127         * @param name
128         * @param version not supported at the moment
129         * @return
130         */
131        public synchronized  CoordinateSystem getCSByCode( String name, String version ) {
132            return getCSByName( name );
133        }
134    
135        /**
136         * 
137         * 
138         * @param name
139         * 
140         * @return
141         */
142        public synchronized CoordinateSystem getCSByName( String name ) {
143            name = name.toUpperCase();
144    
145            CoordinateSystem cs = systems.get( name.toUpperCase() );
146    
147            if ( cs != null ) {
148                return cs;
149            }
150    
151            // if ( name.equalsIgnoreCase( "EPSG:2056" ) ) {
152            // addEPSG2056();
153            // } else
154            if ( name.equalsIgnoreCase( "EPSG:41001" ) ) {
155                addEPSG41001();
156            } else if ( name.equalsIgnoreCase( "EPSG:4269" ) ) {
157                addEPSG4269();
158            } else if ( name.equalsIgnoreCase( "EPSG:4267" ) ) {
159                addEPSG4267();
160            } else if ( name.equalsIgnoreCase( "EPSG:20790" ) ) {
161                addEPSG20790();
162            } else if ( name.equalsIgnoreCase( "EPSG:21780" ) ) {
163                addEPSG21780();
164            } else if ( name.equalsIgnoreCase( "EPSG:4806" ) ) {
165                addEPSG4806();
166            } else if ( name.equalsIgnoreCase( "EPSG:4322" ) ) {
167                addEPSG4322();
168            } else if ( name.equalsIgnoreCase( "EPSG:4324" ) ) {
169                addEPSG4324();
170            } else if ( name.equalsIgnoreCase( "EPSG:4274" ) ) {
171                addEPSG4274();
172            } else if ( name.equalsIgnoreCase( "EPSG:4803" ) ) {
173                addEPSG4803();
174            } else if ( name.equalsIgnoreCase( "EPSG:4308" ) ) {
175                addEPSG4308();
176            } else if ( name.equalsIgnoreCase( "EPSG:4807" ) ) {
177                addEPSG4807();
178            } else if ( name.equalsIgnoreCase( "EPSG:4817" ) ) {
179                addEPSG4817();
180            } else if ( name.equalsIgnoreCase( "EPSG:4801" ) ) {
181                addEPSG4801();
182            } else if ( name.equalsIgnoreCase( "EPSG:4272" ) ) {
183                addEPSG4272();
184            } else if ( name.equalsIgnoreCase( "EPSG:21781" ) ) {
185                addEPSG21781();
186            } else if ( name.equalsIgnoreCase( "EPSG:23028" ) ) {
187                addEPSG23028();
188            } else if ( name.equalsIgnoreCase( "EPSG:23029" ) ) {
189                addEPSG23029();
190            } else if ( name.equalsIgnoreCase( "EPSG:23030" ) ) {
191                addEPSG23030();
192            } else if ( name.equalsIgnoreCase( "EPSG:23031" ) ) {
193                addEPSG23031();
194            } else if ( name.equalsIgnoreCase( "EPSG:23032" ) ) {
195                addEPSG23032();
196            } else if ( name.equalsIgnoreCase( "EPSG:23033" ) ) {
197                addEPSG23033();
198            } else if ( name.equalsIgnoreCase( "EPSG:23034" ) ) {
199                addEPSG23034();
200            } else if ( name.equalsIgnoreCase( "EPSG:23035" ) ) {
201                addEPSG23035();
202            } else if ( name.equalsIgnoreCase( "EPSG:23036" ) ) {
203                addEPSG23036();
204            } else if ( name.equalsIgnoreCase( "EPSG:23037" ) ) {
205                addEPSG23037();
206            } else if ( name.equalsIgnoreCase( "EPSG:23038" ) ) {
207                addEPSG23038();
208            } else if ( name.equalsIgnoreCase( "EPSG:23090" ) ) {
209                addEPSG23090();
210            } else if ( name.equalsIgnoreCase( "EPSG:23095" ) ) {
211                addEPSG23095();
212            } else if ( name.equalsIgnoreCase( "EPSG:25884" ) ) {
213                addEPSG25884();
214            } else if ( name.equalsIgnoreCase( "EPSG:25828" ) || name.equalsIgnoreCase( "EPSG:25829" )
215                        || name.equalsIgnoreCase( "EPSG:25830" ) || name.equalsIgnoreCase( "EPSG:25831" )
216                        || name.equalsIgnoreCase( "EPSG:25832" ) || name.equalsIgnoreCase( "EPSG:25833" )
217                        || name.equalsIgnoreCase( "EPSG:25834" ) || name.equalsIgnoreCase( "EPSG:25835" )
218                        || name.equalsIgnoreCase( "EPSG:25836" ) || name.equalsIgnoreCase( "EPSG:25837" )
219                        || name.equalsIgnoreCase( "EPSG:25838" ) ) {
220                String s = name.substring( 8, 10 );
221                int code = Integer.parseInt( s );
222                addEPSG258XX( code );
223            } else if ( name.equalsIgnoreCase( "EPSG:26591" ) ) {
224                addEPSG26591();
225            } else if ( name.equalsIgnoreCase( "EPSG:26592" ) ) {
226                addEPSG26592();
227            } else if ( name.equalsIgnoreCase( "EPSG:27391" ) ) {
228                addEPSG27391();
229            } else if ( name.equalsIgnoreCase( "EPSG:27392" ) ) {
230                addEPSG27392();
231            } else if ( name.equalsIgnoreCase( "EPSG:27393" ) ) {
232                addEPSG27393();
233            } else if ( name.equalsIgnoreCase( "EPSG:27394" ) ) {
234                addEPSG27394();
235            } else if ( name.equalsIgnoreCase( "EPSG:27395" ) ) {
236                addEPSG27395();
237            } else if ( name.equalsIgnoreCase( "EPSG:27396" ) ) {
238                addEPSG27396();
239            } else if ( name.equalsIgnoreCase( "EPSG:27397" ) ) {
240                addEPSG27397();
241            } else if ( name.equalsIgnoreCase( "EPSG:27398" ) ) {
242                addEPSG27398();
243            } else if ( name.equalsIgnoreCase( "EPSG:27429" ) ) {
244                addEPSG27429();
245            } else if ( name.equalsIgnoreCase( "EPSG:27700" ) ) {
246                addEPSG27700();
247            } else if ( name.equalsIgnoreCase( "EPSG:28402" ) ) {
248                addEPSG28402();
249            } else if ( name.equalsIgnoreCase( "EPSG:28403" ) ) {
250                addEPSG28403();
251            } else if ( name.equalsIgnoreCase( "EPSG:28404" ) ) {
252                addEPSG28404();
253            } else if ( name.equalsIgnoreCase( "EPSG:28405" ) ) {
254                addEPSG28405();
255            } else if ( name.equalsIgnoreCase( "EPSG:28406" ) ) {
256                addEPSG28406();
257            } else if ( name.equalsIgnoreCase( "EPSG:28407" ) ) {
258                addEPSG28407();
259            } else if ( name.equalsIgnoreCase( "EPSG:28408" ) ) {
260                addEPSG28408();
261            } else if ( name.equalsIgnoreCase( "EPSG:28409" ) ) {
262                addEPSG28409();
263            } else if ( name.equalsIgnoreCase( "EPSG:28462" ) ) {
264                addEPSG28462();
265            } else if ( name.equalsIgnoreCase( "EPSG:28462" ) || name.equalsIgnoreCase( "EPSG:28463" )
266                        || name.equalsIgnoreCase( "EPSG:28464" ) || name.equalsIgnoreCase( "EPSG:28465" )
267                        || name.equalsIgnoreCase( "EPSG:28466" ) || name.equalsIgnoreCase( "EPSG:28467" )
268                        || name.equalsIgnoreCase( "EPSG:28468" ) || name.equalsIgnoreCase( "EPSG:28469" ) ) {
269                String s = name.substring( 9 );
270                int code = Integer.parseInt( s );
271                addEPSG2846X( code );
272            } else if ( name.equalsIgnoreCase( "EPSG:29900" ) ) {
273                addEPSG29900();
274            } else if ( name.equalsIgnoreCase( "EPSG:30800" ) ) {
275                addEPSG30800();
276            } else if ( name.equalsIgnoreCase( "EPSG:31275" ) ) {
277                addEPSG31275();
278            } else if ( name.equalsIgnoreCase( "EPSG:31276" ) ) {
279                addEPSG31276();
280            } else if ( name.equalsIgnoreCase( "EPSG:31277" ) ) {
281                addEPSG31277();
282            } else if ( name.equalsIgnoreCase( "EPSG:31278" ) ) {
283                addEPSG31278();
284            } else if ( name.equalsIgnoreCase( "EPSG:31281" ) ) {
285                addEPSG31281();
286            } else if ( name.equalsIgnoreCase( "EPSG:31282" ) ) {
287                addEPSG31282();
288            } else if ( name.equalsIgnoreCase( "EPSG:31283" ) ) {
289                addEPSG31283();
290            } else if ( name.equalsIgnoreCase( "EPSG:31284" ) ) {
291                addEPSG31284();
292            } else if ( name.equalsIgnoreCase( "EPSG:31285" ) ) {
293                addEPSG31285();
294            } else if ( name.equalsIgnoreCase( "EPSG:31286" ) ) {
295                addEPSG31286();
296            } else if ( name.equalsIgnoreCase( "EPSG:31466" ) || name.equalsIgnoreCase( "EPSG:31467" )
297                        || name.equalsIgnoreCase( "EPSG:31468" ) || name.equalsIgnoreCase( "EPSG:31469" ) ) {
298                String s = name.substring( 9 );
299                int code = Integer.parseInt( s );
300                addEPSG3146X( code );
301            } else if ( name.equalsIgnoreCase( "EPSG:31491" ) || name.equalsIgnoreCase( "EPSG:31492" )
302                        || name.equalsIgnoreCase( "EPSG:31493" ) || name.equalsIgnoreCase( "EPSG:31494" )
303                        || name.equalsIgnoreCase( "EPSG:31495" ) ) {
304                String s = name.substring( 9 );
305                int code = Integer.parseInt( s );
306                addEPSG3149X( code );
307            } else if ( name.equalsIgnoreCase( "EPSG:32201" ) || name.equalsIgnoreCase( "EPSG:32202" )
308                        || name.equalsIgnoreCase( "EPSG:32203" ) || name.equalsIgnoreCase( "EPSG:32204" )
309                        || name.equalsIgnoreCase( "EPSG:32205" ) || name.equalsIgnoreCase( "EPSG:32206" )
310                        || name.equalsIgnoreCase( "EPSG:32207" ) || name.equalsIgnoreCase( "EPSG:32208" )
311                        || name.equalsIgnoreCase( "EPSG:32209" ) || name.equalsIgnoreCase( "EPSG:32210" )
312                        || name.equalsIgnoreCase( "EPSG:32211" ) || name.equalsIgnoreCase( "EPSG:32212" )
313                        || name.equalsIgnoreCase( "EPSG:32213" ) || name.equalsIgnoreCase( "EPSG:32214" )
314                        || name.equalsIgnoreCase( "EPSG:32215" ) || name.equalsIgnoreCase( "EPSG:32216" )
315                        || name.equalsIgnoreCase( "EPSG:32217" ) || name.equalsIgnoreCase( "EPSG:32218" )
316                        || name.equalsIgnoreCase( "EPSG:32219" ) || name.equalsIgnoreCase( "EPSG:32220" )
317                        || name.equalsIgnoreCase( "EPSG:32221" ) || name.equalsIgnoreCase( "EPSG:32222" )
318                        || name.equalsIgnoreCase( "EPSG:32223" ) || name.equalsIgnoreCase( "EPSG:32224" )
319                        || name.equalsIgnoreCase( "EPSG:32225" ) || name.equalsIgnoreCase( "EPSG:32226" )
320                        || name.equalsIgnoreCase( "EPSG:32227" ) || name.equalsIgnoreCase( "EPSG:32228" )
321                        || name.equalsIgnoreCase( "EPSG:32229" ) || name.equalsIgnoreCase( "EPSG:32230" )
322                        || name.equalsIgnoreCase( "EPSG:32231" ) || name.equalsIgnoreCase( "EPSG:32232" )
323                        || name.equalsIgnoreCase( "EPSG:32233" ) || name.equalsIgnoreCase( "EPSG:32234" )
324                        || name.equalsIgnoreCase( "EPSG:32235" ) || name.equalsIgnoreCase( "EPSG:32236" )
325                        || name.equalsIgnoreCase( "EPSG:32237" ) || name.equalsIgnoreCase( "EPSG:32238" )
326                        || name.equalsIgnoreCase( "EPSG:32239" ) || name.equalsIgnoreCase( "EPSG:32240" )
327                        || name.equalsIgnoreCase( "EPSG:32241" ) || name.equalsIgnoreCase( "EPSG:32242" )
328                        || name.equalsIgnoreCase( "EPSG:32243" ) || name.equalsIgnoreCase( "EPSG:32244" )
329                        || name.equalsIgnoreCase( "EPSG:32245" ) || name.equalsIgnoreCase( "EPSG:32246" )
330                        || name.equalsIgnoreCase( "EPSG:32247" ) || name.equalsIgnoreCase( "EPSG:32248" )
331                        || name.equalsIgnoreCase( "EPSG:32249" ) || name.equalsIgnoreCase( "EPSG:32250" )
332                        || name.equalsIgnoreCase( "EPSG:32251" ) || name.equalsIgnoreCase( "EPSG:32252" )
333                        || name.equalsIgnoreCase( "EPSG:32253" ) || name.equalsIgnoreCase( "EPSG:32254" )
334                        || name.equalsIgnoreCase( "EPSG:32255" ) || name.equalsIgnoreCase( "EPSG:32256" )
335                        || name.equalsIgnoreCase( "EPSG:32257" ) || name.equalsIgnoreCase( "EPSG:32258" )
336                        || name.equalsIgnoreCase( "EPSG:32259" ) || name.equalsIgnoreCase( "EPSG:32260" ) ) {
337                String s = name.substring( 8, 10 );
338                int code = Integer.parseInt( s );
339                addEPSG322XX( code );
340            } else if ( name.equalsIgnoreCase( "EPSG:32401" ) || name.equalsIgnoreCase( "EPSG:32402" )
341                        || name.equalsIgnoreCase( "EPSG:32403" ) || name.equalsIgnoreCase( "EPSG:32404" )
342                        || name.equalsIgnoreCase( "EPSG:32405" ) || name.equalsIgnoreCase( "EPSG:32406" )
343                        || name.equalsIgnoreCase( "EPSG:32407" ) || name.equalsIgnoreCase( "EPSG:32408" )
344                        || name.equalsIgnoreCase( "EPSG:32409" ) || name.equalsIgnoreCase( "EPSG:32410" )
345                        || name.equalsIgnoreCase( "EPSG:32411" ) || name.equalsIgnoreCase( "EPSG:32412" )
346                        || name.equalsIgnoreCase( "EPSG:32413" ) || name.equalsIgnoreCase( "EPSG:32414" )
347                        || name.equalsIgnoreCase( "EPSG:32415" ) || name.equalsIgnoreCase( "EPSG:32416" )
348                        || name.equalsIgnoreCase( "EPSG:32417" ) || name.equalsIgnoreCase( "EPSG:32418" )
349                        || name.equalsIgnoreCase( "EPSG:32419" ) || name.equalsIgnoreCase( "EPSG:32420" )
350                        || name.equalsIgnoreCase( "EPSG:32421" ) || name.equalsIgnoreCase( "EPSG:32422" )
351                        || name.equalsIgnoreCase( "EPSG:32423" ) || name.equalsIgnoreCase( "EPSG:32424" )
352                        || name.equalsIgnoreCase( "EPSG:32425" ) || name.equalsIgnoreCase( "EPSG:32426" )
353                        || name.equalsIgnoreCase( "EPSG:32427" ) || name.equalsIgnoreCase( "EPSG:32428" )
354                        || name.equalsIgnoreCase( "EPSG:32429" ) || name.equalsIgnoreCase( "EPSG:32430" )
355                        || name.equalsIgnoreCase( "EPSG:32431" ) || name.equalsIgnoreCase( "EPSG:32432" )
356                        || name.equalsIgnoreCase( "EPSG:32433" ) || name.equalsIgnoreCase( "EPSG:32434" )
357                        || name.equalsIgnoreCase( "EPSG:32435" ) || name.equalsIgnoreCase( "EPSG:32436" )
358                        || name.equalsIgnoreCase( "EPSG:32437" ) || name.equalsIgnoreCase( "EPSG:32438" )
359                        || name.equalsIgnoreCase( "EPSG:32439" ) || name.equalsIgnoreCase( "EPSG:32440" )
360                        || name.equalsIgnoreCase( "EPSG:32441" ) || name.equalsIgnoreCase( "EPSG:32442" )
361                        || name.equalsIgnoreCase( "EPSG:32443" ) || name.equalsIgnoreCase( "EPSG:32444" )
362                        || name.equalsIgnoreCase( "EPSG:32445" ) || name.equalsIgnoreCase( "EPSG:32446" )
363                        || name.equalsIgnoreCase( "EPSG:32447" ) || name.equalsIgnoreCase( "EPSG:32448" )
364                        || name.equalsIgnoreCase( "EPSG:32449" ) || name.equalsIgnoreCase( "EPSG:32450" )
365                        || name.equalsIgnoreCase( "EPSG:32451" ) || name.equalsIgnoreCase( "EPSG:32452" )
366                        || name.equalsIgnoreCase( "EPSG:32453" ) || name.equalsIgnoreCase( "EPSG:32454" )
367                        || name.equalsIgnoreCase( "EPSG:32455" ) || name.equalsIgnoreCase( "EPSG:32456" )
368                        || name.equalsIgnoreCase( "EPSG:32457" ) || name.equalsIgnoreCase( "EPSG:32458" )
369                        || name.equalsIgnoreCase( "EPSG:32459" ) || name.equalsIgnoreCase( "EPSG:32460" ) ) {
370                String s = name.substring( 8, 10 );
371                int code = Integer.parseInt( s );
372                addEPSG324XX( code );
373            } else if ( name.equalsIgnoreCase( "EPSG:32601" ) || name.equalsIgnoreCase( "EPSG:32602" )
374                        || name.equalsIgnoreCase( "EPSG:32603" ) || name.equalsIgnoreCase( "EPSG:32604" )
375                        || name.equalsIgnoreCase( "EPSG:32605" ) || name.equalsIgnoreCase( "EPSG:32606" )
376                        || name.equalsIgnoreCase( "EPSG:32607" ) || name.equalsIgnoreCase( "EPSG:32608" )
377                        || name.equalsIgnoreCase( "EPSG:32609" ) || name.equalsIgnoreCase( "EPSG:32610" )
378                        || name.equalsIgnoreCase( "EPSG:32611" ) || name.equalsIgnoreCase( "EPSG:32612" )
379                        || name.equalsIgnoreCase( "EPSG:32613" ) || name.equalsIgnoreCase( "EPSG:32614" )
380                        || name.equalsIgnoreCase( "EPSG:32615" ) || name.equalsIgnoreCase( "EPSG:32616" )
381                        || name.equalsIgnoreCase( "EPSG:32617" ) || name.equalsIgnoreCase( "EPSG:32618" )
382                        || name.equalsIgnoreCase( "EPSG:32619" ) || name.equalsIgnoreCase( "EPSG:32620" )
383                        || name.equalsIgnoreCase( "EPSG:32621" ) || name.equalsIgnoreCase( "EPSG:32622" )
384                        || name.equalsIgnoreCase( "EPSG:32623" ) || name.equalsIgnoreCase( "EPSG:32624" )
385                        || name.equalsIgnoreCase( "EPSG:32625" ) || name.equalsIgnoreCase( "EPSG:32626" )
386                        || name.equalsIgnoreCase( "EPSG:32627" ) || name.equalsIgnoreCase( "EPSG:32628" )
387                        || name.equalsIgnoreCase( "EPSG:32629" ) || name.equalsIgnoreCase( "EPSG:32630" )
388                        || name.equalsIgnoreCase( "EPSG:32631" ) || name.equalsIgnoreCase( "EPSG:32632" )
389                        || name.equalsIgnoreCase( "EPSG:32633" ) || name.equalsIgnoreCase( "EPSG:32634" )
390                        || name.equalsIgnoreCase( "EPSG:32635" ) || name.equalsIgnoreCase( "EPSG:32636" )
391                        || name.equalsIgnoreCase( "EPSG:32637" ) || name.equalsIgnoreCase( "EPSG:32638" )
392                        || name.equalsIgnoreCase( "EPSG:32639" ) || name.equalsIgnoreCase( "EPSG:32640" )
393                        || name.equalsIgnoreCase( "EPSG:32641" ) || name.equalsIgnoreCase( "EPSG:32642" )
394                        || name.equalsIgnoreCase( "EPSG:32643" ) || name.equalsIgnoreCase( "EPSG:32644" )
395                        || name.equalsIgnoreCase( "EPSG:32645" ) || name.equalsIgnoreCase( "EPSG:32646" )
396                        || name.equalsIgnoreCase( "EPSG:32647" ) || name.equalsIgnoreCase( "EPSG:32648" )
397                        || name.equalsIgnoreCase( "EPSG:32649" ) || name.equalsIgnoreCase( "EPSG:32650" )
398                        || name.equalsIgnoreCase( "EPSG:32651" ) || name.equalsIgnoreCase( "EPSG:32652" )
399                        || name.equalsIgnoreCase( "EPSG:32653" ) || name.equalsIgnoreCase( "EPSG:32654" )
400                        || name.equalsIgnoreCase( "EPSG:32655" ) || name.equalsIgnoreCase( "EPSG:32656" )
401                        || name.equalsIgnoreCase( "EPSG:32657" ) || name.equalsIgnoreCase( "EPSG:32658" )
402                        || name.equalsIgnoreCase( "EPSG:32659" ) || name.equalsIgnoreCase( "EPSG:32660" ) ) {
403                String s = name.substring( 8, 10 );
404                int code = Integer.parseInt( s );
405                addEPSG326XX( code );
406            } else if ( name.equalsIgnoreCase( "EPSG:32701" ) || name.equalsIgnoreCase( "EPSG:32702" )
407                        || name.equalsIgnoreCase( "EPSG:32703" ) || name.equalsIgnoreCase( "EPSG:32704" )
408                        || name.equalsIgnoreCase( "EPSG:32705" ) || name.equalsIgnoreCase( "EPSG:32706" )
409                        || name.equalsIgnoreCase( "EPSG:32707" ) || name.equalsIgnoreCase( "EPSG:32708" )
410                        || name.equalsIgnoreCase( "EPSG:32709" ) || name.equalsIgnoreCase( "EPSG:32710" )
411                        || name.equalsIgnoreCase( "EPSG:32711" ) || name.equalsIgnoreCase( "EPSG:32712" )
412                        || name.equalsIgnoreCase( "EPSG:32713" ) || name.equalsIgnoreCase( "EPSG:32714" )
413                        || name.equalsIgnoreCase( "EPSG:32715" ) || name.equalsIgnoreCase( "EPSG:32716" )
414                        || name.equalsIgnoreCase( "EPSG:32717" ) || name.equalsIgnoreCase( "EPSG:32718" )
415                        || name.equalsIgnoreCase( "EPSG:32719" ) || name.equalsIgnoreCase( "EPSG:32720" )
416                        || name.equalsIgnoreCase( "EPSG:32721" ) || name.equalsIgnoreCase( "EPSG:32722" )
417                        || name.equalsIgnoreCase( "EPSG:32723" ) || name.equalsIgnoreCase( "EPSG:32724" )
418                        || name.equalsIgnoreCase( "EPSG:32725" ) || name.equalsIgnoreCase( "EPSG:32726" )
419                        || name.equalsIgnoreCase( "EPSG:32727" ) || name.equalsIgnoreCase( "EPSG:32728" )
420                        || name.equalsIgnoreCase( "EPSG:32729" ) || name.equalsIgnoreCase( "EPSG:32730" )
421                        || name.equalsIgnoreCase( "EPSG:32731" ) || name.equalsIgnoreCase( "EPSG:32732" )
422                        || name.equalsIgnoreCase( "EPSG:32733" ) || name.equalsIgnoreCase( "EPSG:32734" )
423                        || name.equalsIgnoreCase( "EPSG:32735" ) || name.equalsIgnoreCase( "EPSG:32736" )
424                        || name.equalsIgnoreCase( "EPSG:32737" ) || name.equalsIgnoreCase( "EPSG:32738" )
425                        || name.equalsIgnoreCase( "EPSG:32739" ) || name.equalsIgnoreCase( "EPSG:32740" )
426                        || name.equalsIgnoreCase( "EPSG:32741" ) || name.equalsIgnoreCase( "EPSG:32742" )
427                        || name.equalsIgnoreCase( "EPSG:32743" ) || name.equalsIgnoreCase( "EPSG:32744" )
428                        || name.equalsIgnoreCase( "EPSG:32745" ) || name.equalsIgnoreCase( "EPSG:32746" )
429                        || name.equalsIgnoreCase( "EPSG:32747" ) || name.equalsIgnoreCase( "EPSG:32748" )
430                        || name.equalsIgnoreCase( "EPSG:32749" ) || name.equalsIgnoreCase( "EPSG:32750" )
431                        || name.equalsIgnoreCase( "EPSG:32751" ) || name.equalsIgnoreCase( "EPSG:32752" )
432                        || name.equalsIgnoreCase( "EPSG:32753" ) || name.equalsIgnoreCase( "EPSG:32754" )
433                        || name.equalsIgnoreCase( "EPSG:32755" ) || name.equalsIgnoreCase( "EPSG:32756" )
434                        || name.equalsIgnoreCase( "EPSG:32757" ) || name.equalsIgnoreCase( "EPSG:32758" )
435                        || name.equalsIgnoreCase( "EPSG:32759" ) || name.equalsIgnoreCase( "EPSG:32760" ) ) {
436                String s = name.substring( 8, 10 );
437                int code = Integer.parseInt( s );
438                addEPSG327XX( code );
439            } else if ( name.equalsIgnoreCase( "EPSG:4120" ) ) {
440                addEPSG4120();
441            } else if ( name.equalsIgnoreCase( "EPSG:4121" ) ) {
442                addEPSG4121();
443            } else if ( name.equalsIgnoreCase( "EPSG:4124" ) ) {
444                addEPSG4124();
445            } else if ( name.equalsIgnoreCase( "EPSG:4149" ) ) {
446                addEPSG4149();
447            } else if ( name.equalsIgnoreCase( "EPSG:4150" ) ) {
448                addEPSG4150();
449            } else if ( name.equalsIgnoreCase( "EPSG:4151" ) ) {
450                addEPSG4151();
451            } else if ( name.equalsIgnoreCase( "EPSG:4171" ) ) {
452                addEPSG4171();
453            } else if ( name.equalsIgnoreCase( "EPSG:4173" ) ) {
454                addEPSG4173();
455            } else if ( name.equalsIgnoreCase( "EPSG:4230" ) ) {
456                addEPSG4230();
457            } else if ( name.equalsIgnoreCase( "EPSG:4231" ) ) {
458                addEPSG4231();
459            } else if ( name.equalsIgnoreCase( "EPSG:4237" ) ) {
460                addEPSG4237();
461            } else if ( name.equalsIgnoreCase( "EPSG:4258" ) ) {
462                addEPSG4258();
463            } else if ( name.equalsIgnoreCase( "EPSG:4265" ) ) {
464                addEPSG4265();
465            } else if ( name.equalsIgnoreCase( "EPSG:4275" ) ) {
466                addEPSG4275();
467            } else if ( name.equalsIgnoreCase( "EPSG:4277" ) ) {
468                addEPSG4277();
469            } else if ( name.equalsIgnoreCase( "EPSG:4284" ) ) {
470                addEPSG4284();
471            } else if ( name.equalsIgnoreCase( "EPSG:4289" ) ) {
472                addEPSG4289();
473            } else if ( name.equalsIgnoreCase( "EPSG:4299" ) ) {
474                addEPSG4299();
475            } else if ( name.equalsIgnoreCase( "EPSG:4312" ) ) {
476                addEPSG4312();
477            } else if ( name.equalsIgnoreCase( "EPSG:4313" ) ) {
478                addEPSG4313();
479            } else if ( name.equalsIgnoreCase( "EPSG:4314" ) ) {
480                addEPSG4314();
481            } else if ( name.equalsIgnoreCase( "EPSG:32661" ) ) {
482                addEPSG32661();
483            } else if ( name.equalsIgnoreCase( "EPSG:4326" ) || name.equalsIgnoreCase( "urn:ogc:def:crs:OGC:2:84" )
484                        || ( name.equalsIgnoreCase( "CRS:84" ) ) ) {
485                addEPSG4326( name );
486            } else if ( name.equalsIgnoreCase( "LuRef" ) ) {
487                addLuRef();
488            } else if ( name.equalsIgnoreCase( "EPSG:31287" ) ) {
489                addEPSG31287();
490            } else if ( name.equalsIgnoreCase( "EPSG:31300" ) ) {
491                addEPSG31300();
492            } else if ( name.equalsIgnoreCase( "EPSG:27561" ) ) {
493                addEPSG27561();
494            } else if ( name.equalsIgnoreCase( "EPSG:27562" ) ) {
495                addEPSG27562();
496            } else if ( name.equalsIgnoreCase( "EPSG:27563" ) ) {
497                addEPSG27563();
498            } else if ( name.equalsIgnoreCase( "EPSG:27564" ) ) {
499                addEPSG27564();
500            } else if ( name.equalsIgnoreCase( "EPSG:27571" ) ) {
501                addEPSG27571();
502            } else if ( name.equalsIgnoreCase( "EPSG:27572" ) ) {
503                addEPSG27572();
504            } else if ( name.equalsIgnoreCase( "EPSG:27573" ) ) {
505                addEPSG27573();
506            } else if ( name.equalsIgnoreCase( "EPSG:27574" ) ) {
507                addEPSG27574();
508            } else if ( name.equalsIgnoreCase( "EPSG:27581" ) ) {
509                addEPSG27581();
510            } else if ( name.equalsIgnoreCase( "EPSG:27582" ) ) {
511                addEPSG27582();
512            } else if ( name.equalsIgnoreCase( "EPSG:27583" ) ) {
513                addEPSG27583();
514            } else if ( name.equalsIgnoreCase( "EPSG:27584" ) ) {
515                addEPSG27584();
516            } else if ( name.equalsIgnoreCase( "EPSG:27591" ) ) {
517                addEPSG27591();
518            } else if ( name.equalsIgnoreCase( "EPSG:27592" ) ) {
519                addEPSG27592();
520            } else if ( name.equalsIgnoreCase( "EPSG:27593" ) ) {
521                addEPSG27593();
522            } else if ( name.equalsIgnoreCase( "EPSG:27594" ) ) {
523                addEPSG27594();
524            } else if ( name.equalsIgnoreCase( "EPSG:27291" ) ) {
525                addEPSG27291();
526            } else if ( name.equalsIgnoreCase( "EPSG:27292" ) ) {
527                addEPSG27292();
528            } else if ( name.equalsIgnoreCase( "EPSG:27200" ) ) {
529                addEPSG27200();
530            } else if ( name.equalsIgnoreCase( "EPSG:26716" ) ) {
531                addEPSG26716();
532            } else if ( name.equalsIgnoreCase( "EPSG:28992" ) ) {
533                addEPSG28992();
534            } else if ( name.equalsIgnoreCase( "EPSG:26912" ) ) {
535                addEPSG26912();
536            } else if ( name.equalsIgnoreCase( "EPSG:2152" ) ) {
537                addEPSG2152();
538            }
539            return systems.get( name );
540        }
541    
542        /**
543         * 
544         */
545        private void addEPSG4267() {
546            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Clarke 1866", 6378206.4, 294.978698, Unit.METRE );
547    
548            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
549            convInfo.dx = -3;
550            convInfo.dy = 142;
551            convInfo.dz = 183;
552    
553            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
554    
555            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4267", Unit.DEGREE, horDatum,
556                                                                                        PrimeMeridian.GREENWICH,
557                                                                                        AxisInfo.LONGITUDE,
558                                                                                        AxisInfo.LATITUDE );
559            save( cs );
560        }
561    
562        private void addEPSG4269() {
563            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1980", 6378137.0, 298.2572221, Unit.METRE );
564    
565            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
566    
567            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
568    
569            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4269", Unit.DEGREE, horDatum,
570                                                                                        PrimeMeridian.GREENWICH,
571                                                                                        AxisInfo.LONGITUDE,
572                                                                                        AxisInfo.LATITUDE );
573            save( cs );
574        }
575    
576        /**
577         * Returns the parameter list descriptor for the specified properties list.
578         */
579        private static ParameterListDescriptor getDescriptor( final Object[] properties ) {
580            final String[] names = new String[properties.length / 4];
581            final Class[] classes = new Class[names.length];
582            final Object[] defaults = new Object[names.length];
583            final Range[] ranges = new Range[names.length];
584            for ( int i = 0; i < names.length; i++ ) {
585                final int j = i * 4;
586                names[i] = (String) properties[j + 0];
587                classes[i] = (Class) properties[j + 1];
588                defaults[i] = properties[j + 2];
589                ranges[i] = (Range) properties[j + 3];
590            }
591            return new ParameterListDescriptorImpl( null, names, classes, defaults, ranges );
592        }
593    
594        /**
595         * 
596         */
597        private void addEPSG4326( String name ) {
598            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( name, Unit.DEGREE,
599                                                                                        HorizontalDatum.WGS84,
600                                                                                        PrimeMeridian.GREENWICH,
601                                                                                        AxisInfo.LONGITUDE,
602                                                                                        AxisInfo.LATITUDE );
603    
604            save( cs );
605        }
606    
607        /**
608         * <p>
609         * Norway - onshore.
610         * </p>
611         * <p>
612         * Geodetic survey. Recommended coordinate axis representation for the human interface.
613         * </p>
614         */
615        private void addEPSG4817() {
616            Ellipsoid ellipsoid = csFactory.createFlattenedSphere( "NGO 1948 (Oslo)", 6377492.018, 299.1528128, Unit.METRE );
617    
618            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
619            convInfo.dx = 0;
620            convInfo.dy = 0;
621            convInfo.dz = 0;
622    
623            HorizontalDatum hz = csFactory.createHorizontalDatum( "NGO 1948 (Oslo)", DatumType.CLASSIC, ellipsoid, convInfo );
624    
625            PrimeMeridian pm = csFactory.createPrimeMeridian( "NGO 1948 (Oslo)", Unit.DEGREE, 10.72291667 );
626    
627            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4817", Unit.DEGREE, hz, pm,
628                                                                                        AxisInfo.LONGITUDE,
629                                                                                        AxisInfo.LATITUDE );
630    
631            save( cs );
632        }
633    
634        /**
635         * 
636         */
637        private void addEPSG4322() {
638            Ellipsoid ellipsoid = csFactory.createFlattenedSphere( "WGS 72", 6378135, 298.26, Unit.METRE );
639    
640            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
641            convInfo.dx = 0;
642            convInfo.dy = 0;
643            convInfo.dz = 4.5;
644            convInfo.ex = 0;
645            convInfo.ey = 0;
646            convInfo.ez = 0.554;
647            convInfo.ppm = 0.2263;
648    
649            HorizontalDatum hz = csFactory.createHorizontalDatum( "WGS 72", DatumType.CLASSIC, ellipsoid, convInfo );
650    
651            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4322", Unit.DEGREE, hz,
652                                                                                        PrimeMeridian.GREENWICH,
653                                                                                        AxisInfo.LONGITUDE,
654                                                                                        AxisInfo.LATITUDE );
655    
656            save( cs );
657        }
658    
659        /**
660         * 
661         */
662        private void addEPSG4324() {
663            Ellipsoid ellipsoid = csFactory.createFlattenedSphere( "WGS 72BE", 6378135, 298.26, Unit.METRE );
664    
665            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
666            convInfo.dx = 0;
667            convInfo.dy = 0;
668            convInfo.dz = 1.9;
669            convInfo.ex = 0;
670            convInfo.ey = 0;
671            convInfo.ez = 0.814;
672            convInfo.ppm = -0.38;
673    
674            HorizontalDatum hz = csFactory.createHorizontalDatum( "WGS 72 Transit Broadcast Ephemeris", DatumType.CLASSIC,
675                                                                  ellipsoid, convInfo );
676    
677            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4324", Unit.DEGREE, hz,
678                                                                                        PrimeMeridian.GREENWICH,
679                                                                                        AxisInfo.LONGITUDE,
680                                                                                        AxisInfo.LATITUDE );
681    
682            save( cs );
683        }
684    
685        /**
686         * 
687         */
688        private void addEPSG4314() {
689            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
690    
691            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
692    
693            // BKG
694            convInfo.dx = 586;
695            convInfo.dy = 87;
696            convInfo.dz = 409;
697            convInfo.ex = 0.52;
698            convInfo.ey = 0.15;
699            convInfo.ez = -2.82;
700            convInfo.ppm = 9;
701    
702            // EPSG
703            /*
704             * convInfo.dx = 598.1; convInfo.dy = 73.7; convInfo.dz = 418.2; convInfo.ex = 0.202;
705             * convInfo.ey = 0.045; convInfo.ez = -2.455; convInfo.ppm = 6.7;
706             */
707    
708            /*
709             * convInfo.dx = 582; convInfo.dy = 105; convInfo.dz = 414; convInfo.ex = 1.04; convInfo.ey =
710             * 0.32; convInfo.ez = -3.08; convInfo.ppm = 9;
711             */
712    
713            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
714    
715            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4314", Unit.DEGREE, horDatum,
716                                                                                        PrimeMeridian.GREENWICH,
717                                                                                        AxisInfo.LONGITUDE,
718                                                                                        AxisInfo.LATITUDE );
719            save( cs );
720        }
721    
722        /**
723         * NZGD49 / alias = GD49
724         * <p>
725         * New Zealand
726         * </p>
727         * <p>
728         * Geodetic survey. Recommended coordinate axis representation for the human interface.
729         * Superseded by NZGD49 in March 2000. New Zealand Department of Lands and Surveys Technical
730         * Report No. 1; 1978.
731         * </p>
732         */
733        private void addEPSG4272() {
734    
735            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "International 1924", 6378388.0, 297.0, Unit.METRE );
736    
737            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
738            convInfo.dx = 59.47;
739            convInfo.dy = -5.04;
740            convInfo.dz = 187.44;
741            convInfo.ex = -0.47;
742            convInfo.ey = 0.1;
743            convInfo.ez = -1.024;
744            convInfo.ppm = -4.5993;
745    
746            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
747    
748            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4272", Unit.DEGREE, horDatum,
749                                                                                        PrimeMeridian.GREENWICH,
750                                                                                        AxisInfo.LONGITUDE,
751                                                                                        AxisInfo.LATITUDE );
752            save( cs );
753        }
754    
755        /**
756         * 
757         */
758        private void addEPSG4230() {
759            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "International 1924", 6378388.0, 297.0, Unit.METRE );
760    
761            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
762            convInfo.dx = -87;
763            convInfo.dy = -98;
764            convInfo.dz = -121;
765    
766            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
767    
768            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4230", Unit.DEGREE, horDatum,
769                                                                                        PrimeMeridian.GREENWICH,
770                                                                                        AxisInfo.LONGITUDE,
771                                                                                        AxisInfo.LATITUDE );
772            save( cs );
773        }
774    
775        /**
776         * 
777         */
778        private void addEPSG4801() {
779            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
780    
781            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
782            convInfo.dx = 660.077;
783            convInfo.dy = 13.551;
784            convInfo.dz = 369.344;
785            convInfo.ex = 2.484;
786            convInfo.ey = 1.738;
787            convInfo.ez = 2.939;
788            convInfo.ppm = 5.66;
789    
790            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
791    
792            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4801", Unit.DEGREE, horDatum,
793                                                                                        PrimeMeridian.GREENWICH,
794                                                                                        AxisInfo.LONGITUDE,
795                                                                                        AxisInfo.LATITUDE );
796            save( cs );
797        }
798    
799        /**
800         * 
801         */
802        private void addEPSG4806() {
803            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "International 1924", 6378388.0, 297.0, Unit.METRE );
804    
805            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
806            convInfo.dx = -225;
807            convInfo.dy = -65;
808            convInfo.dz = -9;
809    
810            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
811    
812            PrimeMeridian pm = csFactory.createPrimeMeridian( "Rome", Unit.DEGREE, 12.45233333333333 );
813    
814            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4806", Unit.DEGREE, horDatum,
815                                                                                        pm, AxisInfo.LONGITUDE,
816                                                                                        AxisInfo.LATITUDE );
817            save( cs );
818        }
819    
820        /**
821         * 
822         */
823        private void addEPSG23028() {
824            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
825    
826            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
827    
828            double centerMeridian = -15.0;
829            double easting = 500000;
830            double northing = 0;
831            double scaleFactor = 0.9996;
832    
833            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
834                                                                new Point2D.Double( centerMeridian, 0 ),
835                                                                new Point2D.Double( easting, northing ), scaleFactor );
836    
837            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23028", geoCS, projection,
838                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
839            save( cs );
840        }
841    
842        /**
843         * 
844         */
845        private void addEPSG23029() {
846            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
847    
848            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
849    
850            double centerMeridian = -9.0;
851            double easting = 500000;
852            double northing = 0;
853            double scaleFactor = 0.9996;
854    
855            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
856                                                                new Point2D.Double( centerMeridian, 0 ),
857                                                                new Point2D.Double( easting, northing ), scaleFactor );
858    
859            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23029", geoCS, projection,
860                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
861            save( cs );
862        }
863    
864        /**
865         * 
866         */
867        private void addEPSG23030() {
868            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
869    
870            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
871    
872            double centerMeridian = -3.0;
873            double easting = 500000;
874            double northing = 0;
875            double scaleFactor = 0.9996;
876    
877            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
878                                                                new Point2D.Double( centerMeridian, 0 ),
879                                                                new Point2D.Double( easting, northing ), scaleFactor );
880    
881            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23030", geoCS, projection,
882                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
883            save( cs );
884        }
885    
886        /**
887         * 
888         */
889        private void addEPSG23031() {
890            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
891    
892            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
893    
894            double centerMeridian = 3.0;
895            double easting = 500000;
896            double northing = 0;
897            double scaleFactor = 0.9996;
898    
899            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
900                                                                new Point2D.Double( centerMeridian, 0 ),
901                                                                new Point2D.Double( easting, northing ), scaleFactor );
902    
903            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23031", geoCS, projection,
904                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
905            save( cs );
906        }
907    
908        /**
909         * 
910         */
911        private void addEPSG23032() {
912            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
913    
914            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
915    
916            double centerMeridian = 9.0;
917            double easting = 500000;
918            double northing = 0;
919            double scaleFactor = 0.9996;
920    
921            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
922                                                                new Point2D.Double( centerMeridian, 0 ),
923                                                                new Point2D.Double( easting, northing ), scaleFactor );
924    
925            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23032", geoCS, projection,
926                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
927            save( cs );
928        }
929    
930        /**
931         * 
932         */
933        private void addEPSG23033() {
934            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
935    
936            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
937    
938            double centerMeridian = 15.0;
939            double easting = 500000;
940            double northing = 0;
941            double scaleFactor = 0.9996;
942    
943            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
944                                                                new Point2D.Double( centerMeridian, 0 ),
945                                                                new Point2D.Double( easting, northing ), scaleFactor );
946    
947            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23033", geoCS, projection,
948                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
949            save( cs );
950        }
951    
952        /**
953         * 
954         */
955        private void addEPSG23034() {
956            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
957    
958            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
959    
960            double centerMeridian = 21.0;
961            double easting = 0;
962            double northing = 0;
963            double scaleFactor = 0.9996;
964    
965            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
966                                                                new Point2D.Double( centerMeridian, 0 ),
967                                                                new Point2D.Double( easting, northing ), scaleFactor );
968    
969            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23034", geoCS, projection,
970                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
971            save( cs );
972        }
973    
974        /**
975         * 
976         */
977        private void addEPSG23035() {
978            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
979    
980            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
981    
982            double centerMeridian = 27.0;
983            double easting = 500000;
984            double northing = 0;
985            double scaleFactor = 0.9996;
986    
987            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
988                                                                new Point2D.Double( centerMeridian, 0 ),
989                                                                new Point2D.Double( easting, northing ), scaleFactor );
990    
991            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23035", geoCS, projection,
992                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
993            save( cs );
994        }
995    
996        /**
997         * 
998         */
999        private void addEPSG23036() {
1000            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
1001    
1002            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1003    
1004            double centerMeridian = 33.0;
1005            double easting = 500000;
1006            double northing = 0;
1007            double scaleFactor = 0.9996;
1008    
1009            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1010                                                                new Point2D.Double( centerMeridian, 0 ),
1011                                                                new Point2D.Double( easting, northing ), scaleFactor );
1012    
1013            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23036", geoCS, projection,
1014                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1015            save( cs );
1016        }
1017    
1018        /**
1019         * 
1020         */
1021        private void addEPSG23037() {
1022            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
1023    
1024            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1025    
1026            double centerMeridian = 39.0;
1027            double easting = 500000;
1028            double northing = 0;
1029            double scaleFactor = 0.9996;
1030    
1031            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1032                                                                new Point2D.Double( centerMeridian, 0 ),
1033                                                                new Point2D.Double( easting, northing ), scaleFactor );
1034    
1035            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23037", geoCS, projection,
1036                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1037            save( cs );
1038        }
1039    
1040        /**
1041         * 
1042         */
1043        private void addEPSG23038() {
1044            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
1045    
1046            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1047    
1048            double centerMeridian = 45.0;
1049            double easting = 500000;
1050            double northing = 0;
1051            double scaleFactor = 0.9996;
1052    
1053            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1054                                                                new Point2D.Double( centerMeridian, 0 ),
1055                                                                new Point2D.Double( easting, northing ), scaleFactor );
1056    
1057            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23038", geoCS, projection,
1058                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1059            save( cs );
1060        }
1061    
1062        /**
1063         * 
1064         */
1065        private void addEPSG23090() {
1066            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
1067    
1068            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1069    
1070            double centerMeridian = 0.0;
1071            double easting = 0;
1072            double northing = 0;
1073            double scaleFactor = 0.9996;
1074    
1075            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1076                                                                new Point2D.Double( centerMeridian, 0 ),
1077                                                                new Point2D.Double( easting, northing ), scaleFactor );
1078    
1079            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23090", geoCS, projection,
1080                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1081            save( cs );
1082        }
1083    
1084        /**
1085         * 
1086         */
1087        private void addEPSG23095() {
1088            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
1089    
1090            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1091    
1092            double centerMeridian = 5.0;
1093            double easting = 0;
1094            double northing = 0;
1095            double scaleFactor = 0.9996;
1096    
1097            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1098                                                                new Point2D.Double( centerMeridian, 0 ),
1099                                                                new Point2D.Double( easting, northing ), scaleFactor );
1100    
1101            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:23095", geoCS, projection,
1102                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1103            save( cs );
1104        }
1105    
1106        /**
1107         * German Gauss-Kr�ger Zones
1108         * 
1109         * @param code
1110         */
1111        private void addEPSG3146X( int code ) {
1112            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4314" );
1113    
1114            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1115    
1116            double centerMeridian = ( ( code - 6 ) * 3.0 ) + 6;
1117            double easting = 2500000 + ( ( code - 6 ) * 1000000 );
1118            double northing = 0.0;
1119            double scaleFactor = 1.0;
1120    
1121            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1122                                                                new Point2D.Double( centerMeridian, 0 ),
1123                                                                new Point2D.Double( easting, northing ), scaleFactor );
1124    
1125            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:3146" + code, geoCS,
1126                                                                                      projection, Unit.METRE, AxisInfo.X,
1127                                                                                      AxisInfo.Y );
1128            save( cs );
1129        }
1130    
1131        /**
1132         * German Gauss-Kr�ger Zones (old EPSG:code)
1133         * 
1134         * @param code
1135         */
1136        private void addEPSG3149X( int code ) {
1137            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4314" );
1138    
1139            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1140    
1141            double centerMeridian = ( code * 3.0 );
1142            double easting = 2500000 + ( ( code - 2 ) * 1000000 );
1143            double northing = 0.0;
1144            double scaleFactor = 1.0;
1145    
1146            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1147                                                                new Point2D.Double( centerMeridian, 0 ),
1148                                                                new Point2D.Double( easting, northing ), scaleFactor );
1149    
1150            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:3149" + code, geoCS,
1151                                                                                      projection, Unit.METRE, AxisInfo.X,
1152                                                                                      AxisInfo.Y );
1153            save( cs );
1154        }
1155    
1156        /**
1157         * 
1158         */
1159        private void addEPSG4231() {
1160            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "International 1924", 6378388.0, 297.0, Unit.METRE );
1161    
1162            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1163            convInfo.dx = -82.981;
1164            convInfo.dy = -99.719;
1165            convInfo.dz = -110.709;
1166            convInfo.ex = -0.5076;
1167            convInfo.ey = -0.35;
1168            convInfo.ez = 0.3898;
1169            convInfo.ppm = -0.3143;
1170    
1171            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1172    
1173            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4231", Unit.DEGREE, horDatum,
1174                                                                                        PrimeMeridian.GREENWICH,
1175                                                                                        AxisInfo.LONGITUDE,
1176                                                                                        AxisInfo.LATITUDE );
1177            save( cs );
1178        }
1179    
1180        /**
1181         * 
1182         */
1183        private void addEPSG4258() {
1184            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1980", 6378137.0, 298.2572221, Unit.METRE );
1185    
1186            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1187    
1188            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1189    
1190            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4258", Unit.DEGREE, horDatum,
1191                                                                                        PrimeMeridian.GREENWICH,
1192                                                                                        AxisInfo.LONGITUDE,
1193                                                                                        AxisInfo.LATITUDE );
1194            save( cs );
1195        }
1196    
1197        /**
1198         * 
1199         */
1200        private void addEPSG4150() {
1201            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1202    
1203            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1204            convInfo.dx = 674.374;
1205            convInfo.dy = 15.056;
1206            convInfo.dz = 405.346;
1207    
1208            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1209    
1210            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4150", Unit.DEGREE, horDatum,
1211                                                                                        PrimeMeridian.GREENWICH,
1212                                                                                        AxisInfo.LONGITUDE,
1213                                                                                        AxisInfo.LATITUDE );
1214            save( cs );
1215        }
1216    
1217        /**
1218         * 
1219         */
1220        private void addEPSG4120() {
1221            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1222    
1223            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1224            convInfo.dx = -199.87;
1225            convInfo.dy = 74.79;
1226            convInfo.dz = 246.62;
1227    
1228            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1229    
1230            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4120", Unit.DEGREE, horDatum,
1231                                                                                        PrimeMeridian.GREENWICH,
1232                                                                                        AxisInfo.LONGITUDE,
1233                                                                                        AxisInfo.LATITUDE );
1234            save( cs );
1235        }
1236    
1237        /**
1238         * 
1239         */
1240        private void addEPSG4124() {
1241            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1242    
1243            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1244            convInfo.dx = 419.3836;
1245            convInfo.dy = 99.3335;
1246            convInfo.dz = 591.3451;
1247            convInfo.ex = -0.850389;
1248            convInfo.ey = -1.817277;
1249            convInfo.ez = 7.862238;
1250            convInfo.ppm = -0.99496;
1251    
1252            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1253    
1254            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4124", Unit.DEGREE, horDatum,
1255                                                                                        PrimeMeridian.GREENWICH,
1256                                                                                        AxisInfo.LONGITUDE,
1257                                                                                        AxisInfo.LATITUDE );
1258            save( cs );
1259        }
1260    
1261        /**
1262         * 
1263         */
1264        private void addEPSG4149() {
1265            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1266    
1267            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1268            convInfo.dx = 660.077;
1269            convInfo.dy = 13.551;
1270            convInfo.dz = 369.344;
1271            convInfo.ex = 2.484;
1272            convInfo.ey = 1.783;
1273            convInfo.ez = 2.939;
1274            convInfo.ppm = 5.66;
1275    
1276            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1277    
1278            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4149", Unit.DEGREE, horDatum,
1279                                                                                        PrimeMeridian.GREENWICH,
1280                                                                                        AxisInfo.LONGITUDE,
1281                                                                                        AxisInfo.LATITUDE );
1282            save( cs );
1283        }
1284    
1285        /**
1286         * 
1287         */
1288        private void addEPSG4151() {
1289            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1980", 6377397.155, 299.1528128, Unit.METRE );
1290    
1291            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1292            convInfo.dx = 674.374;
1293            convInfo.dy = 15.056;
1294            convInfo.dz = 405.346;
1295    
1296            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1297    
1298            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4151", Unit.DEGREE, horDatum,
1299                                                                                        PrimeMeridian.GREENWICH,
1300                                                                                        AxisInfo.LONGITUDE,
1301                                                                                        AxisInfo.LATITUDE );
1302            save( cs );
1303        }
1304    
1305        /**
1306         * 
1307         */
1308        private void addEPSG4121() {
1309            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1980", 6378137.0, 298.2572221, Unit.METRE );
1310    
1311            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1312            convInfo.dx = -199.87;
1313            convInfo.dy = 74.79;
1314            convInfo.dz = 246.62;
1315    
1316            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1317    
1318            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4121", Unit.DEGREE, horDatum,
1319                                                                                        PrimeMeridian.GREENWICH,
1320                                                                                        AxisInfo.LONGITUDE,
1321                                                                                        AxisInfo.LATITUDE );
1322            save( cs );
1323        }
1324    
1325        /**
1326         * 
1327         */
1328        private void addEPSG4171() {
1329            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1980", 6378137.0, 298.2572221, Unit.METRE );
1330    
1331            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1332    
1333            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1334    
1335            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4171", Unit.DEGREE, horDatum,
1336                                                                                        PrimeMeridian.GREENWICH,
1337                                                                                        AxisInfo.LONGITUDE,
1338                                                                                        AxisInfo.LATITUDE );
1339            save( cs );
1340        }
1341    
1342        /**
1343         * 
1344         */
1345        private void addEPSG4173() {
1346            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1980", 6378137.0, 298.2572221, Unit.METRE );
1347    
1348            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1349    
1350            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1351    
1352            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4173", Unit.DEGREE, horDatum,
1353                                                                                        PrimeMeridian.GREENWICH,
1354                                                                                        AxisInfo.LONGITUDE,
1355                                                                                        AxisInfo.LATITUDE );
1356            save( cs );
1357        }
1358    
1359        /**
1360         * 
1361         */
1362        private void addEPSG4237() {
1363            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "GRS 1967", 6378160.0, 298.2471674, Unit.METRE );
1364    
1365            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1366            convInfo.dx = -56;
1367            convInfo.dy = 75.77;
1368            convInfo.dz = 15.31;
1369            convInfo.ex = -0.37;
1370            convInfo.ey = -0.2;
1371            convInfo.ez = -0.21;
1372            convInfo.ppm = -1.01;
1373    
1374            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1375    
1376            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4237", Unit.DEGREE, horDatum,
1377                                                                                        PrimeMeridian.GREENWICH,
1378                                                                                        AxisInfo.LONGITUDE,
1379                                                                                        AxisInfo.LATITUDE );
1380            save( cs );
1381        }
1382    
1383        /**
1384         * 
1385         */
1386        private void addEPSG4265() {
1387            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "International 1924", 6378388.0, 297.0, Unit.METRE );
1388    
1389            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1390            convInfo.dx = -225;
1391            convInfo.dy = -65;
1392            convInfo.dz = 9;
1393    
1394            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1395    
1396            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4265", Unit.DEGREE, horDatum,
1397                                                                                        PrimeMeridian.GREENWICH,
1398                                                                                        AxisInfo.LONGITUDE,
1399                                                                                        AxisInfo.LATITUDE );
1400            save( cs );
1401        }
1402    
1403        /**
1404         * 
1405         */
1406        private void addEPSG4275() {
1407            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Clark 1880 (IGN)", 6378249.2, 293.466021, Unit.METRE );
1408    
1409            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1410            convInfo.dx = -168;
1411            convInfo.dy = -60;
1412            convInfo.dz = 320;
1413    
1414            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1415    
1416            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4275", Unit.DEGREE, horDatum,
1417                                                                                        PrimeMeridian.GREENWICH,
1418                                                                                        AxisInfo.LONGITUDE,
1419                                                                                        AxisInfo.LATITUDE );
1420            save( cs );
1421        }
1422    
1423        /**
1424         * 
1425         */
1426        private void addEPSG4807() {
1427            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Clark 1880 (IGN)", 6378249.2, 293.466021, Unit.METRE );
1428    
1429            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1430            convInfo.dx = -168;
1431            convInfo.dy = -60;
1432            convInfo.dz = +320;
1433    
1434            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1435    
1436            PrimeMeridian pm = csFactory.createPrimeMeridian( "Paris", Unit.DEGREE, 2.337229166666667 ); // 2.5969213
1437                                                                                                            // );
1438    
1439            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4807", Unit.DEGREE, horDatum,
1440                                                                                        pm, AxisInfo.LONGITUDE,
1441                                                                                        AxisInfo.LATITUDE );
1442            save( cs );
1443        }
1444    
1445        /**
1446         * 
1447         */
1448        private void addEPSG4277() {
1449            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Airy 1830", 6377563.0, 299.3249646, Unit.METRE );
1450    
1451            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1452            convInfo.dx = 535.948;
1453            convInfo.dy = -31.357;
1454            convInfo.dz = 665.16;
1455            convInfo.ex = 0.15;
1456            convInfo.ey = 0.247;
1457            convInfo.ez = 0.998;
1458            convInfo.ppm = -21.689;
1459    
1460            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1461    
1462            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4277", Unit.DEGREE, horDatum,
1463                                                                                        PrimeMeridian.GREENWICH,
1464                                                                                        AxisInfo.LONGITUDE,
1465                                                                                        AxisInfo.LATITUDE );
1466            save( cs );
1467        }
1468    
1469        /**
1470         * 
1471         */
1472        private void addEPSG4284() {
1473            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Krassowsky 1940", 6378245.0, 298.3, Unit.METRE );
1474    
1475            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1476            convInfo.dx = 21.53219;
1477            convInfo.dy = -97.00027;
1478            convInfo.dz = -60.74046;
1479            convInfo.ex = -0.99548;
1480            convInfo.ey = -0.58147;
1481            convInfo.ez = -0.2418;
1482            convInfo.ppm = -4.5981;
1483    
1484            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1485    
1486            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4284", Unit.DEGREE, horDatum,
1487                                                                                        PrimeMeridian.GREENWICH,
1488                                                                                        AxisInfo.LONGITUDE,
1489                                                                                        AxisInfo.LATITUDE );
1490            save( cs );
1491        }
1492    
1493        /**
1494         * 
1495         */
1496        private void addEPSG4289() {
1497            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1498    
1499            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1500            convInfo.dx = 593.16;
1501            convInfo.dy = 26.15;
1502            convInfo.dz = 478.54;
1503            convInfo.ex = -6.3239;
1504            convInfo.ey = -0.5008;
1505            convInfo.ez = -5.5487;
1506            convInfo.ppm = 4.0775;
1507    
1508            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1509    
1510            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4289", Unit.DEGREE, horDatum,
1511                                                                                        PrimeMeridian.GREENWICH,
1512                                                                                        AxisInfo.LONGITUDE,
1513                                                                                        AxisInfo.LATITUDE );
1514            save( cs );
1515        }
1516    
1517        /**
1518         * 
1519         */
1520        private void addEPSG4299() {
1521            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Airy Modified 1849", 6377340.189, 299.3249646,
1522                                                                   Unit.METRE );
1523    
1524            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1525            convInfo.dx = 506;
1526            convInfo.dy = -122;
1527            convInfo.dz = 611;
1528    
1529            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1530    
1531            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4299", Unit.DEGREE, horDatum,
1532                                                                                        PrimeMeridian.GREENWICH,
1533                                                                                        AxisInfo.LONGITUDE,
1534                                                                                        AxisInfo.LATITUDE );
1535            save( cs );
1536        }
1537    
1538        /**
1539         * 
1540         */
1541        private void addEPSG4312() {
1542            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1543    
1544            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1545            convInfo.dx = 682;
1546            convInfo.dy = -203;
1547            convInfo.dz = 480;
1548    
1549            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1550    
1551            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4312", Unit.DEGREE, horDatum,
1552                                                                                        PrimeMeridian.GREENWICH,
1553                                                                                        AxisInfo.LONGITUDE,
1554                                                                                        AxisInfo.LATITUDE );
1555            save( cs );
1556        }
1557    
1558        /**
1559         * 
1560         */
1561        private void addEPSG4308() {
1562            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Bessel 1841", 6377397.155, 299.1528128, Unit.METRE );
1563    
1564            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1565    
1566            // ??????
1567            convInfo.dx = 682;
1568            convInfo.dy = -203;
1569            convInfo.dz = 480;
1570    
1571            // ??????
1572            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1573    
1574            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4308", Unit.DEGREE, horDatum,
1575                                                                                        PrimeMeridian.GREENWICH,
1576                                                                                        AxisInfo.LONGITUDE,
1577                                                                                        AxisInfo.LATITUDE );
1578            save( cs );
1579        }
1580    
1581        /**
1582         * <p>
1583         * Portugal - onshore.
1584         * </p>
1585         * <p>
1586         * Geodetic survey. Recommended coordinate axis representation for the human interface.
1587         * Supersedes Lisbon 1890 system which used Bessel 1841 ellipsoid. Superseded by Datum 73 (code
1588         * 4274).
1589         */
1590        private void addEPSG4803() {
1591            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Lisbon 1937 (Lisbon)", 6378388, 297, Unit.METRE );
1592    
1593            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1594    
1595            // ??????
1596            convInfo.dx = 0;
1597            convInfo.dy = 0;
1598            convInfo.dz = 0;
1599    
1600            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1601    
1602            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4803", Unit.DEGREE, horDatum,
1603                                                                                        PrimeMeridian.GREENWICH,
1604                                                                                        AxisInfo.LONGITUDE,
1605                                                                                        AxisInfo.LATITUDE );
1606            save( cs );
1607        }
1608    
1609        /**
1610         * <p>
1611         * Portugal - onshore.
1612         * </p>
1613         * <p>
1614         * Geodetic survey. Recommended coordinate axis representation for the human interface.
1615         * </p>
1616         */
1617        private void addEPSG4274() {
1618            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "Datum 73", 6378388, 297, Unit.METRE );
1619    
1620            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1621    
1622            convInfo.dx = -231;
1623            convInfo.dy = 102.6;
1624            convInfo.dz = 29.8;
1625            convInfo.ex = -0.615;
1626            convInfo.ey = -0.198;
1627            convInfo.ez = 0.881;
1628            convInfo.ppm = 1.79;
1629    
1630            HorizontalDatum horDatum = new HorizontalDatum( "Datum 73", DatumType.CLASSIC, ellipsoid, convInfo );
1631    
1632            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4274", Unit.DEGREE, horDatum,
1633                                                                                        PrimeMeridian.GREENWICH,
1634                                                                                        AxisInfo.LONGITUDE,
1635                                                                                        AxisInfo.LATITUDE );
1636            save( cs );
1637        }
1638    
1639        /**
1640         * 
1641         */
1642        private void addEPSG4313() {
1643            Ellipsoid ellipsoid = Ellipsoid.createFlattenedSphere( "International 1924", 6378388.0, 297.0, Unit.METRE );
1644    
1645            WGS84ConversionInfo convInfo = new WGS84ConversionInfo();
1646            convInfo.dx = -99.059;
1647            convInfo.dy = 53.322;
1648            convInfo.dz = -112.486;
1649            convInfo.ex = -0.419;
1650            convInfo.ey = 0.83;
1651            convInfo.ez = -1.885;
1652            convInfo.ppm = 0.999999;
1653    
1654            HorizontalDatum horDatum = new HorizontalDatum( "My HorizontalDatum", DatumType.CLASSIC, ellipsoid, convInfo );
1655    
1656            GeographicCoordinateSystem cs = csFactory.createGeographicCoordinateSystem( "EPSG:4313", Unit.DEGREE, horDatum,
1657                                                                                        PrimeMeridian.GREENWICH,
1658                                                                                        AxisInfo.LONGITUDE,
1659                                                                                        AxisInfo.LATITUDE );
1660            save( cs );
1661        }
1662    
1663        /**
1664         * 
1665         */
1666        private void addEPSG20790() {
1667            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4803" );
1668    
1669            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1670    
1671            double centerMeridian = 1.0;
1672            double easting = 200000.0;
1673            double northing = 300000.0;
1674            double scaleFactor = 1.0;
1675    
1676            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1677                                                                new Point2D.Double( centerMeridian, 0 ),
1678                                                                new Point2D.Double( easting, northing ), scaleFactor );
1679    
1680            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:20790", geoCS, projection,
1681                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1682            save( cs );
1683        }
1684    
1685        /**
1686         * 
1687         */
1688        private void addEPSG21780() {
1689            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4801" );
1690    
1691            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1692    
1693            double centerMeridian = 0.0;
1694            double easting = 0.0;
1695    
1696            Projection projection = null;
1697    
1698            /*
1699             * implement factory for oblique mercator projection
1700             */
1701            projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1702                                                     new Point2D.Double( centerMeridian, 0 ), new Point2D.Double( easting,
1703                                                                                                                  0 ), 0 );
1704    
1705            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:21780", geoCS, projection,
1706                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1707            save( cs );
1708        }
1709    
1710        /**
1711         * 
1712         */
1713        private void addEPSG21781() {
1714            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4149" );
1715    
1716            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1717    
1718            double centerMeridian = 7.495833333; // (7-26-22,5)
1719            double easting = 600000.0;
1720    
1721            Projection projection = null;
1722    
1723            projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1724                                                     new Point2D.Double( centerMeridian, 0 ), new Point2D.Double( easting,
1725                                                                                                                  0 ), 0 );
1726    
1727            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem(
1728                                                                                      "EPSG:21781",
1729                                                                                      geoCS,
1730                                                                                      projection,
1731                                                                                      org.deegree.model.csct.units.Unit.METRE,
1732                                                                                      AxisInfo.X, AxisInfo.Y );
1733            save( cs );
1734        }
1735    
1736        /**
1737         * 
1738         * 
1739         * @param code
1740         */
1741        private void addEPSG258XX( int code ) {
1742            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4258" );
1743    
1744            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1745    
1746            double centerMeridian = ( ( code - 28 ) * 6.0 ) - 15.0;
1747            double easting = 500000.0;
1748            double northing = 0.0;
1749            double scaleFactor = 0.9996;
1750    
1751            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1752                                                                new Point2D.Double( centerMeridian, 0 ),
1753                                                                new Point2D.Double( easting, northing ), scaleFactor );
1754    
1755            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:258" + code, geoCS, projection,
1756                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1757    
1758            geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4314" );
1759    
1760            ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1761    
1762            save( cs );
1763        }
1764    
1765        /**
1766         * 
1767         */
1768        private void addEPSG25884() {
1769            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4258" );
1770    
1771            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1772    
1773            double centerMeridian = 24.0;
1774            double easting = 500000.0;
1775            double northing = 0.0;
1776            double scaleFactor = 1.0;
1777    
1778            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1779                                                                new Point2D.Double( centerMeridian, 0 ),
1780                                                                new Point2D.Double( easting, northing ), scaleFactor );
1781    
1782            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:25884", geoCS, projection,
1783                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1784            save( cs );
1785        }
1786    
1787        /**
1788         * 
1789         */
1790        private void addEPSG26591() {
1791            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4806" );
1792    
1793            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1794    
1795            double centerMeridian = 9.0;
1796            double easting = 1500000.0;
1797            double northing = 0.0;
1798            double scaleFactor = 0.9996;
1799    
1800            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1801                                                                new Point2D.Double( centerMeridian, 0 ),
1802                                                                new Point2D.Double( easting, northing ), scaleFactor );
1803    
1804            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:26591", geoCS, projection,
1805                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1806            save( cs );
1807        }
1808    
1809        /**
1810         * 
1811         */
1812        private void addEPSG26592() {
1813            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4806" );
1814    
1815            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1816    
1817            double centerMeridian = 15.0;
1818            double easting = 2520000.0;
1819            double northing = 0.0;
1820            double scaleFactor = 0.9996;
1821    
1822            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1823                                                                new Point2D.Double( centerMeridian, 0 ),
1824                                                                new Point2D.Double( easting, northing ), scaleFactor );
1825    
1826            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:26592", geoCS, projection,
1827                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1828            save( cs );
1829        }
1830    
1831        /**
1832         * 
1833         */
1834        private void addEPSG27391() {
1835            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1836    
1837            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1838    
1839            double centerMeridian = 4.66667; // (4-40-0)
1840            double easting = 0.0;
1841            double northing = 0.0;
1842            double scaleFactor = 1.0;
1843    
1844            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1845                                                                new Point2D.Double( centerMeridian, 0 ),
1846                                                                new Point2D.Double( easting, northing ), scaleFactor );
1847    
1848            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27391", geoCS, projection,
1849                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1850            save( cs );
1851        }
1852    
1853        /**
1854         * 
1855         */
1856        private void addEPSG27392() {
1857            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1858    
1859            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1860    
1861            double centerMeridian = 2.33333; // (2-20-0)
1862            double easting = 0.0;
1863            double northing = 0.0;
1864            double scaleFactor = 1.0;
1865    
1866            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1867                                                                new Point2D.Double( centerMeridian, 0 ),
1868                                                                new Point2D.Double( easting, northing ), scaleFactor );
1869    
1870            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27392", geoCS, projection,
1871                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1872            save( cs );
1873        }
1874    
1875        /**
1876         * 
1877         */
1878        private void addEPSG27393() {
1879            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1880    
1881            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1882    
1883            double centerMeridian = 0.0;
1884            double easting = 0.0;
1885            double northing = 0.0;
1886            double scaleFactor = 1.0;
1887    
1888            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1889                                                                new Point2D.Double( centerMeridian, 0 ),
1890                                                                new Point2D.Double( easting, northing ), scaleFactor );
1891    
1892            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27393", geoCS, projection,
1893                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1894            save( cs );
1895        }
1896    
1897        /**
1898         * 
1899         */
1900        private void addEPSG27394() {
1901            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1902    
1903            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1904    
1905            double centerMeridian = 2.50; // (2-30-0)
1906            double easting = 0.0;
1907            double northing = 0.0;
1908            double scaleFactor = 1.0;
1909    
1910            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1911                                                                new Point2D.Double( centerMeridian, 0 ),
1912                                                                new Point2D.Double( easting, northing ), scaleFactor );
1913    
1914            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27394", geoCS, projection,
1915                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1916            save( cs );
1917        }
1918    
1919        /**
1920         * 
1921         */
1922        private void addEPSG27395() {
1923            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1924    
1925            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1926    
1927            double centerMeridian = 6.16667; // (6-10-0)
1928            double easting = 0.0;
1929            double northing = 0.0;
1930            double scaleFactor = 1.0;
1931    
1932            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1933                                                                new Point2D.Double( centerMeridian, 0 ),
1934                                                                new Point2D.Double( easting, northing ), scaleFactor );
1935    
1936            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27395", geoCS, projection,
1937                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1938            save( cs );
1939        }
1940    
1941        /**
1942         * 
1943         */
1944        private void addEPSG27396() {
1945            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1946    
1947            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1948    
1949            double centerMeridian = 10.16667; // (10-10-0)
1950            double easting = 0.0;
1951            double northing = 0.0;
1952            double scaleFactor = 1.0;
1953    
1954            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1955                                                                new Point2D.Double( centerMeridian, 0 ),
1956                                                                new Point2D.Double( easting, northing ), scaleFactor );
1957    
1958            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27396", geoCS, projection,
1959                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1960            save( cs );
1961        }
1962    
1963        /**
1964         * 
1965         */
1966        private void addEPSG27397() {
1967            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1968    
1969            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1970    
1971            double centerMeridian = 14.16667; // (14-10-0)
1972            double easting = 0.0;
1973            double northing = 0.0;
1974            double scaleFactor = 1.0;
1975    
1976            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1977                                                                new Point2D.Double( centerMeridian, 0 ),
1978                                                                new Point2D.Double( easting, northing ), scaleFactor );
1979    
1980            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27397", geoCS, projection,
1981                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
1982            save( cs );
1983        }
1984    
1985        /**
1986         * 
1987         */
1988        private void addEPSG27398() {
1989            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4817" );
1990    
1991            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
1992    
1993            double centerMeridian = 18.33333; // (18-20-0)
1994            double easting = 0.0;
1995            double northing = 0.0;
1996            double scaleFactor = 1.0;
1997    
1998            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
1999                                                                new Point2D.Double( centerMeridian, 0 ),
2000                                                                new Point2D.Double( easting, northing ), scaleFactor );
2001    
2002            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27398", geoCS, projection,
2003                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2004            save( cs );
2005        }
2006    
2007        /**
2008         * 
2009         */
2010        private void addEPSG27429() {
2011            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4274" );
2012    
2013            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2014    
2015            double centerMeridian = 9.0;
2016            double easting = 500000.0;
2017            double northing = 0.0;
2018            double scaleFactor = 1.0;
2019    
2020            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2021                                                                new Point2D.Double( centerMeridian, 0 ),
2022                                                                new Point2D.Double( easting, northing ), scaleFactor );
2023    
2024            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27429", geoCS, projection,
2025                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2026            save( cs );
2027        }
2028    
2029        /**
2030         * 
2031         */
2032        private void addEPSG27700() {
2033            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4277" );
2034    
2035            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2036    
2037            double centerMeridian = -2.0;
2038            double easting = 400000.0;
2039            double northing = -100000.0;
2040            double scaleFactor = 0.9996012717;
2041    
2042            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2043                                                                new Point2D.Double( centerMeridian, 0 ),
2044                                                                new Point2D.Double( easting, northing ), scaleFactor );
2045    
2046            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27700", geoCS, projection,
2047                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2048            save( cs );
2049        }
2050    
2051        /**
2052         * 
2053         */
2054        private void addEPSG28402() {
2055            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2056    
2057            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2058    
2059            double centerMeridian = 9.0;
2060            double easting = 2500000.0;
2061            double northing = 0.0;
2062            double scaleFactor = 1.0;
2063    
2064            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2065                                                                new Point2D.Double( centerMeridian, 0 ),
2066                                                                new Point2D.Double( easting, northing ), scaleFactor );
2067    
2068            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28402", geoCS, projection,
2069                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2070            save( cs );
2071        }
2072    
2073        /**
2074         * 
2075         */
2076        private void addEPSG28403() {
2077            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2078    
2079            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2080    
2081            double centerMeridian = 15.0;
2082            double easting = 3500000.0;
2083            double northing = 0.0;
2084            double scaleFactor = 1.0;
2085    
2086            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2087                                                                new Point2D.Double( centerMeridian, 0 ),
2088                                                                new Point2D.Double( easting, northing ), scaleFactor );
2089    
2090            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28403", geoCS, projection,
2091                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2092            save( cs );
2093        }
2094    
2095        /**
2096         * 
2097         */
2098        private void addEPSG28404() {
2099            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2100    
2101            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2102    
2103            double centerMeridian = 21.0;
2104            double easting = 4500000.0;
2105            double northing = 0.0;
2106            double scaleFactor = 1.0;
2107    
2108            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2109                                                                new Point2D.Double( centerMeridian, 0 ),
2110                                                                new Point2D.Double( easting, northing ), scaleFactor );
2111    
2112            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28404", geoCS, projection,
2113                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2114            save( cs );
2115        }
2116    
2117        /**
2118         * 
2119         */
2120        private void addEPSG28405() {
2121            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2122    
2123            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2124    
2125            double centerMeridian = 27.0;
2126            double easting = 5500000.0;
2127            double northing = 0.0;
2128            double scaleFactor = 1.0;
2129    
2130            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2131                                                                new Point2D.Double( centerMeridian, 0 ),
2132                                                                new Point2D.Double( easting, northing ), scaleFactor );
2133    
2134            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28405", geoCS, projection,
2135                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2136            save( cs );
2137        }
2138    
2139        /**
2140         * 
2141         */
2142        private void addEPSG28406() {
2143            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2144    
2145            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2146    
2147            double centerMeridian = 33.0;
2148            double easting = 6500000.0;
2149            double northing = 0.0;
2150            double scaleFactor = 1.0;
2151    
2152            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2153                                                                new Point2D.Double( centerMeridian, 0 ),
2154                                                                new Point2D.Double( easting, northing ), scaleFactor );
2155    
2156            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28406", geoCS, projection,
2157                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2158            save( cs );
2159        }
2160    
2161        /**
2162         * 
2163         */
2164        private void addEPSG28407() {
2165            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2166    
2167            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2168    
2169            double centerMeridian = 39.0;
2170            double easting = 7500000.0;
2171            double northing = 0.0;
2172            double scaleFactor = 1.0;
2173    
2174            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2175                                                                new Point2D.Double( centerMeridian, 0 ),
2176                                                                new Point2D.Double( easting, northing ), scaleFactor );
2177    
2178            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28407", geoCS, projection,
2179                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2180            save( cs );
2181        }
2182    
2183        /**
2184         * 
2185         */
2186        private void addEPSG28408() {
2187            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2188    
2189            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2190    
2191            double centerMeridian = 45.0;
2192            double easting = 8500000.0;
2193            double northing = 0.0;
2194            double scaleFactor = 1.0;
2195    
2196            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2197                                                                new Point2D.Double( centerMeridian, 0 ),
2198                                                                new Point2D.Double( easting, northing ), scaleFactor );
2199    
2200            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28408", geoCS, projection,
2201                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2202            save( cs );
2203        }
2204    
2205        /**
2206         * 
2207         */
2208        private void addEPSG28409() {
2209            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2210    
2211            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2212    
2213            double centerMeridian = 51.0;
2214            double easting = 9500000.0;
2215            double northing = 0.0;
2216            double scaleFactor = 1.0;
2217    
2218            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2219                                                                new Point2D.Double( centerMeridian, 0 ),
2220                                                                new Point2D.Double( easting, northing ), scaleFactor );
2221    
2222            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28409", geoCS, projection,
2223                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2224            save( cs );
2225        }
2226    
2227        /**
2228         * 
2229         */
2230        private void addEPSG28462() {
2231            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2232    
2233            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2234    
2235            double centerMeridian = 9.0;
2236            double easting = 500000.0;
2237            double northing = 0.0;
2238            double scaleFactor = 1.0;
2239    
2240            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2241                                                                new Point2D.Double( centerMeridian, 0 ),
2242                                                                new Point2D.Double( easting, northing ), scaleFactor );
2243    
2244            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28462", geoCS, projection,
2245                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2246            save( cs );
2247        }
2248    
2249        /**
2250         * 
2251         * 
2252         * @param code
2253         */
2254        private void addEPSG2846X( int code ) {
2255            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4284" );
2256    
2257            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2258    
2259            double centerMeridian = ( code * 6 ) - 3;
2260            double easting = 500000.0;
2261            double northing = 0.0;
2262            double scaleFactor = 1.0;
2263    
2264            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2265                                                                new Point2D.Double( centerMeridian, 0 ),
2266                                                                new Point2D.Double( easting, northing ), scaleFactor );
2267    
2268            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:2846X" + code, geoCS,
2269                                                                                      projection, Unit.METRE, AxisInfo.X,
2270                                                                                      AxisInfo.Y );
2271            save( cs );
2272        }
2273    
2274        /**
2275         * 
2276         */
2277        private void addEPSG29900() {
2278            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4299" );
2279    
2280            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2281    
2282            double centerMeridian = 8.0;
2283            double easting = 200000.0;
2284            double northing = 250000.0;
2285            double scaleFactor = 1.0;
2286    
2287            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2288                                                                new Point2D.Double( centerMeridian, 0 ),
2289                                                                new Point2D.Double( easting, northing ), scaleFactor );
2290    
2291            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:29900", geoCS, projection,
2292                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2293            save( cs );
2294        }
2295    
2296        /**
2297         * 
2298         */
2299        private void addEPSG30800() {
2300            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4299" );
2301    
2302            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2303    
2304            double centerMeridian = 15.88277; // 15-48-29,8
2305            double easting = 1500000.0;
2306            double northing = 0.0;
2307            double scaleFactor = 1.0;
2308    
2309            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2310                                                                new Point2D.Double( centerMeridian, 0 ),
2311                                                                new Point2D.Double( easting, northing ), scaleFactor );
2312    
2313            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:30800", geoCS, projection,
2314                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2315            save( cs );
2316        }
2317    
2318        /**
2319         * 
2320         */
2321        private void addEPSG31275() {
2322            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2323    
2324            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2325    
2326            double centerMeridian = 15.0;
2327            double easting = 5500000.0;
2328            double northing = 0.0;
2329            double scaleFactor = 1.0;
2330    
2331            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2332                                                                new Point2D.Double( centerMeridian, 0 ),
2333                                                                new Point2D.Double( easting, northing ), scaleFactor );
2334    
2335            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31275", geoCS, projection,
2336                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2337            save( cs );
2338        }
2339    
2340        /**
2341         * 
2342         */
2343        private void addEPSG31276() {
2344            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2345    
2346            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2347    
2348            double centerMeridian = 18.0;
2349            double easting = 6500000.0;
2350            double northing = 0.0;
2351            double scaleFactor = 1.0;
2352    
2353            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2354                                                                new Point2D.Double( centerMeridian, 0 ),
2355                                                                new Point2D.Double( easting, northing ), scaleFactor );
2356    
2357            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31276", geoCS, projection,
2358                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2359            save( cs );
2360        }
2361    
2362        /**
2363         * 
2364         */
2365        private void addEPSG31277() {
2366            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2367    
2368            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2369    
2370            double centerMeridian = 21.0;
2371            double easting = 7500000.0;
2372            double northing = 0.0;
2373            double scaleFactor = 1.0;
2374    
2375            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2376                                                                new Point2D.Double( centerMeridian, 0 ),
2377                                                                new Point2D.Double( easting, northing ), scaleFactor );
2378    
2379            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31277", geoCS, projection,
2380                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2381            save( cs );
2382        }
2383    
2384        /**
2385         * 
2386         */
2387        private void addEPSG31278() {
2388            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2389    
2390            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2391    
2392            double centerMeridian = 21.0;
2393            double easting = 7500000.0;
2394            double northing = 0.0;
2395            double scaleFactor = 1.0;
2396    
2397            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2398                                                                new Point2D.Double( centerMeridian, 0 ),
2399                                                                new Point2D.Double( easting, northing ), scaleFactor );
2400    
2401            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31278", geoCS, projection,
2402                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2403            save( cs );
2404        }
2405    
2406        /**
2407         * 
2408         */
2409        private void addEPSG31281() {
2410            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4314" );
2411    
2412            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2413    
2414            double centerMeridian = 28.0;
2415            double easting = 0.0;
2416            double northing = 0.0;
2417            double scaleFactor = 1.0;
2418    
2419            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2420                                                                new Point2D.Double( centerMeridian, 0 ),
2421                                                                new Point2D.Double( easting, northing ), scaleFactor );
2422    
2423            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31281", geoCS, projection,
2424                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2425            save( cs );
2426        }
2427    
2428        /**
2429         * 
2430         */
2431        private void addEPSG31282() {
2432            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4314" );
2433    
2434            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2435    
2436            double centerMeridian = 31.0;
2437            double easting = 0.0;
2438            double northing = 0.0;
2439            double scaleFactor = 1.0;
2440    
2441            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2442                                                                new Point2D.Double( centerMeridian, 0 ),
2443                                                                new Point2D.Double( easting, northing ), scaleFactor );
2444    
2445            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31282", geoCS, projection,
2446                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2447            save( cs );
2448        }
2449    
2450        /**
2451         * 
2452         */
2453        private void addEPSG31283() {
2454            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4314" );
2455    
2456            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2457    
2458            double centerMeridian = 34.0;
2459            double easting = 0.0;
2460            double northing = 0.0;
2461            double scaleFactor = 1.0;
2462    
2463            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2464                                                                new Point2D.Double( centerMeridian, 0 ),
2465                                                                new Point2D.Double( easting, northing ), scaleFactor );
2466    
2467            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31283", geoCS, projection,
2468                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2469            save( cs );
2470        }
2471    
2472        /**
2473         * 
2474         */
2475        private void addEPSG31284() {
2476            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2477    
2478            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2479    
2480            double centerMeridian = 10.33333; // 10-20-0
2481            double easting = 150000.0;
2482            double northing = 0.0;
2483            double scaleFactor = 1.0;
2484    
2485            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2486                                                                new Point2D.Double( centerMeridian, 0 ),
2487                                                                new Point2D.Double( easting, northing ), scaleFactor );
2488    
2489            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31284", geoCS, projection,
2490                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2491            save( cs );
2492        }
2493    
2494        /**
2495         * 
2496         */
2497        private void addEPSG31285() {
2498            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2499    
2500            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2501    
2502            double centerMeridian = 13.33333; // 13-20-0
2503            double easting = 450000.0;
2504            double northing = 0.0;
2505            double scaleFactor = 1.0;
2506    
2507            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2508                                                                new Point2D.Double( centerMeridian, 0 ),
2509                                                                new Point2D.Double( easting, northing ), scaleFactor );
2510    
2511            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31285", geoCS, projection,
2512                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2513            save( cs );
2514        }
2515    
2516        /**
2517         * 
2518         */
2519        private void addEPSG31286() {
2520            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2521    
2522            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2523    
2524            double centerMeridian = 16.33333; // 16-20-0
2525            double easting = 750000.0;
2526            double northing = 0.0;
2527            double scaleFactor = 1.0;
2528    
2529            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2530                                                                new Point2D.Double( centerMeridian, 0 ),
2531                                                                new Point2D.Double( easting, northing ), scaleFactor );
2532    
2533            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31286", geoCS, projection,
2534                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2535            save( cs );
2536        }
2537    
2538        /**
2539         * 
2540         * 
2541         * @param code
2542         */
2543        private void addEPSG322XX( int code ) {
2544            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4322" );
2545    
2546            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2547    
2548            double centerMeridian = ( ( code - 28 ) * 6.0 ) - 15.0;
2549            double easting = 500000.0;
2550            double northing = 0.0;
2551            double scaleFactor = 1.0;
2552    
2553            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2554                                                                new Point2D.Double( centerMeridian, 0 ),
2555                                                                new Point2D.Double( easting, northing ), scaleFactor );
2556    
2557            String s = null;
2558    
2559            if ( code < 10 ) {
2560                s = "EPSG:3220" + code;
2561            } else {
2562                s = "EPSG:322" + code;
2563            }
2564    
2565            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( s, geoCS, projection, Unit.METRE,
2566                                                                                      AxisInfo.X, AxisInfo.Y );
2567            save( cs );
2568        }
2569    
2570        /**
2571         * 
2572         * 
2573         * @param code
2574         */
2575        private void addEPSG324XX( int code ) {
2576            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4324" );
2577    
2578            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2579    
2580            double centerMeridian = ( ( code - 28 ) * 6.0 ) - 15.0;
2581            double easting = 500000.0;
2582            double northing = 0.0;
2583            double scaleFactor = 1.0;
2584    
2585            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2586                                                                new Point2D.Double( centerMeridian, 0 ),
2587                                                                new Point2D.Double( easting, northing ), scaleFactor );
2588            String s = null;
2589    
2590            if ( code < 10 ) {
2591                s = "EPSG:3240" + code;
2592            } else {
2593                s = "EPSG:324" + code;
2594            }
2595    
2596            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( s, geoCS, projection, Unit.METRE,
2597                                                                                      AxisInfo.X, AxisInfo.Y );
2598            save( cs );
2599        }
2600    
2601        /**
2602         * 
2603         * 
2604         * @param code
2605         */
2606        private void addEPSG326XX( int code ) {
2607            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4326" );
2608    
2609            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2610    
2611            double centerMeridian = ( ( code - 28 ) * 6.0 ) - 15.0;
2612            double easting = 500000.0;
2613            double northing = 0.0;
2614            double scaleFactor = 0.9996;
2615    
2616            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2617                                                                new Point2D.Double( centerMeridian, 0 ),
2618                                                                new Point2D.Double( easting, northing ), scaleFactor );
2619    
2620            String s = null;
2621    
2622            if ( code < 10 ) {
2623                s = "EPSG:3260" + code;
2624            } else {
2625                s = "EPSG:326" + code;
2626            }
2627    
2628            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( s, geoCS, projection, Unit.METRE,
2629                                                                                      AxisInfo.X, AxisInfo.Y );
2630            save( cs );
2631        }
2632    
2633        /**
2634         * 
2635         * 
2636         * @param code
2637         */
2638        private void addEPSG327XX( int code ) {
2639            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4326" );
2640    
2641            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2642    
2643            double centerMeridian = ( ( code - 33 ) * 6.0 ) - 15.0;
2644            double easting = 500000.0;
2645            double northing = 1000000.0;
2646            double scaleFactor = 0.9996;
2647    
2648            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2649                                                                new Point2D.Double( centerMeridian, 0 ),
2650                                                                new Point2D.Double( easting, northing ), scaleFactor );
2651    
2652            String s = null;
2653    
2654            if ( code < 10 ) {
2655                s = "EPSG:3270" + code;
2656            } else {
2657                s = "EPSG:327" + code;
2658            }
2659    
2660            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( s, geoCS, projection, Unit.METRE,
2661                                                                                      AxisInfo.X, AxisInfo.Y );
2662            save( cs );
2663        }
2664    
2665        /**
2666         * 
2667         */
2668        private void addEPSG32661() {
2669            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4326" );
2670    
2671            if ( geoCS == null ) {
2672                return;
2673            }
2674    
2675            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2676    
2677            double centerMeridian = 0.0;
2678            double easting = 500000.0;
2679            double northing = 0.0;
2680            double scaleFactor = 1.0;
2681    
2682            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2683                                                                new Point2D.Double( centerMeridian, 0 ),
2684                                                                new Point2D.Double( easting, northing ), scaleFactor );
2685    
2686            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:32661", geoCS, projection,
2687                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2688            save( cs );
2689        }
2690    
2691        /**
2692         * 
2693         */
2694        private void addLuRef() {
2695            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4230" );
2696    
2697            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
2698    
2699            double centerMeridian = 6.16666666666666666666666;
2700            double centerLat = 49.833333333333333333333333;
2701            double easting = 80000;
2702            double northing = 100000;
2703            double scaleFactor = 1;
2704    
2705            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
2706                                                                new Point2D.Double( centerMeridian, centerLat ),
2707                                                                new Point2D.Double( easting, northing ), scaleFactor );
2708    
2709            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "LuRef", geoCS, projection,
2710                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2711            save( cs );
2712        }
2713    
2714        /**
2715         * MGI / Austria Lambert
2716         */
2717        private void addEPSG31287() {
2718            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4312" );
2719    
2720            if ( geoCS == null ) {
2721                return;
2722            }
2723    
2724            ParameterList param = new ParameterListImpl( pld );
2725            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2726            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2727            param.setParameter( "false_easting", 400000.0 );
2728            param.setParameter( "false_northing", 400000.0 );
2729            param.setParameter( "central_meridian", 13.33333333333333 );
2730            param.setParameter( "latitude_of_origin", 47.5 );
2731            param.setParameter( "standard_parallel1", 49.0 );
2732            param.setParameter( "standard_parallel2", 46.0 );
2733            param.setParameter( "scale_factor", 1.0 );
2734    
2735            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2736    
2737            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31287", geoCS, projection,
2738                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2739            save( cs );
2740        }
2741    
2742        /**
2743         * Belge 1972 / Belge Lambert 72
2744         */
2745        private void addEPSG31300() {
2746            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4313" );
2747    
2748            if ( geoCS == null ) {
2749                return;
2750            }
2751    
2752            ParameterList param = new ParameterListImpl( pld );
2753            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2754            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2755            param.setParameter( "false_easting", 150000.013 );
2756            param.setParameter( "false_northing", 5400088.438 );
2757            param.setParameter( "central_meridian", 4.3674866666667 );
2758            param.setParameter( "latitude_of_origin", 90.0 );
2759            param.setParameter( "standard_parallel1", 49.8333339 );
2760            param.setParameter( "standard_parallel2", 51.1666672333333 );
2761    
2762            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2763    
2764            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:31300", geoCS, projection,
2765                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2766            save( cs );
2767        }
2768    
2769        /***********************************************************************************************
2770         * NTF (Paris) / Lambert Nord France
2771         */
2772        private void addEPSG27561() {
2773            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2774    
2775            if ( geoCS == null ) {
2776                return;
2777            }
2778    
2779            ParameterList param = new ParameterListImpl( pld );
2780            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2781            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2782            param.setParameter( "false_easting", 600000.0 );
2783            param.setParameter( "false_northing", 200000.0 );
2784            param.setParameter( "central_meridian", 2.33722916666667 );
2785            param.setParameter( "latitude_of_origin", 49.5 );
2786            param.setParameter( "standard_parallel1", 48.59852277777780 );
2787            param.setParameter( "standard_parallel2", 50.39591166666670 );
2788            param.setParameter( "scale_factor", 0.999877341 );
2789    
2790            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2791    
2792            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27561", geoCS, projection,
2793                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2794            save( cs );
2795        }
2796    
2797        /**
2798         * NTF (Paris) / Lambert Centre France
2799         */
2800        private void addEPSG27562() {
2801            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2802    
2803            if ( geoCS == null ) {
2804                return;
2805            }
2806    
2807            ParameterList param = new ParameterListImpl( pld );
2808            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2809            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2810            param.setParameter( "false_easting", 600000.0 );
2811            param.setParameter( "false_northing", 200000.0 );
2812            param.setParameter( "central_meridian", 2.33722916666667 );
2813            param.setParameter( "latitude_of_origin", 46.80 );
2814            param.setParameter( "standard_parallel1", 45.8989188888889 );
2815            param.setParameter( "standard_parallel2", 47.6960144444444 );
2816            param.setParameter( "scale_factor", 0.99987742 );
2817    
2818            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2819    
2820            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27562", geoCS, projection,
2821                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2822            save( cs );
2823        }
2824    
2825        /**
2826         * NTF (Paris) / Lambert Sud France
2827         */
2828        private void addEPSG27563() {
2829            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2830    
2831            if ( geoCS == null ) {
2832                return;
2833            }
2834    
2835            ParameterList param = new ParameterListImpl( pld );
2836            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2837            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2838            param.setParameter( "false_easting", 600000.0 );
2839            param.setParameter( "false_northing", 200000.0 );
2840            param.setParameter( "central_meridian", 2.33722916666667 );
2841            param.setParameter( "latitude_of_origin", 44.1 );
2842            param.setParameter( "standard_parallel1", 43.1992913888888889 );
2843            param.setParameter( "standard_parallel2", 44.9960938888888889 );
2844            param.setParameter( "scale_factor", 0.999877499 );
2845    
2846            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2847    
2848            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27563", geoCS, projection,
2849                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2850            save( cs );
2851        }
2852    
2853        /**
2854         * NTF (Paris) / Lambert Corse
2855         */
2856        private void addEPSG27564() {
2857            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2858    
2859            if ( geoCS == null ) {
2860                return;
2861            }
2862    
2863            ParameterList param = new ParameterListImpl( pld );
2864            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2865            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2866            param.setParameter( "false_easting", 234.358 );
2867            param.setParameter( "false_northing", 185861.369 );
2868            param.setParameter( "central_meridian", 2.33722916666667 );
2869            param.setParameter( "latitude_of_origin", 42.165 );
2870            param.setParameter( "standard_parallel1", 41.56038777777778 );
2871            param.setParameter( "standard_parallel2", 42.76766333333333 );
2872            param.setParameter( "scale_factor", 0.99994471 );
2873    
2874            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2875    
2876            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27564", geoCS, projection,
2877                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2878            save( cs );
2879        }
2880    
2881        /**
2882         * NTF (Paris) / Lambert zone I
2883         */
2884        private void addEPSG27571() {
2885            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2886    
2887            if ( geoCS == null ) {
2888                return;
2889            }
2890    
2891            ParameterList param = new ParameterListImpl( pld );
2892            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2893            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2894            param.setParameter( "false_easting", 600000.0 );
2895            param.setParameter( "false_northing", 1200000.0 );
2896            param.setParameter( "central_meridian", 2.33722916666667 );
2897            param.setParameter( "latitude_of_origin", 49.5 );
2898            param.setParameter( "standard_parallel1", 48.59852277777780 );
2899            param.setParameter( "standard_parallel2", 50.39591166666670 );
2900            param.setParameter( "scale_factor", 0.999877341 );
2901    
2902            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2903    
2904            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27571", geoCS, projection,
2905                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2906            save( cs );
2907        }
2908    
2909        /**
2910         * NTF (Paris) / Lambert zone II (France II etendu)
2911         */
2912        private void addEPSG27572() {
2913            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2914    
2915            if ( geoCS == null ) {
2916                return;
2917            }
2918    
2919            ParameterList param = new ParameterListImpl( pld );
2920            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2921            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2922            param.setParameter( "false_easting", 600000.0 );
2923            param.setParameter( "false_northing", 2200000.0 );
2924            param.setParameter( "central_meridian", 2.33722916666667 );
2925            param.setParameter( "latitude_of_origin", 46.8 );
2926            param.setParameter( "standard_parallel1", 45.8989188888889 );
2927            param.setParameter( "standard_parallel2", 47.6960144444444 );
2928            param.setParameter( "scale_factor", 0.99987742 );
2929    
2930            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2931    
2932            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27572", geoCS, projection,
2933                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2934            save( cs );
2935        }
2936    
2937        /**
2938         * NTF (Paris) / Lambert zone III
2939         */
2940        private void addEPSG27573() {
2941            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2942    
2943            if ( geoCS == null ) {
2944                return;
2945            }
2946    
2947            ParameterList param = new ParameterListImpl( pld );
2948            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2949            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2950            param.setParameter( "false_easting", 600000.0 );
2951            param.setParameter( "false_northing", 3200000.0 );
2952            param.setParameter( "central_meridian", 2.33722916666667 );
2953            param.setParameter( "latitude_of_origin", 44.1 );
2954            param.setParameter( "standard_parallel1", 43.1992913888888889 );
2955            param.setParameter( "standard_parallel2", 44.9960938888888889 );
2956            param.setParameter( "scale_factor", 0.999877499 );
2957    
2958            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2959    
2960            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27573", geoCS, projection,
2961                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2962            save( cs );
2963        }
2964    
2965        /**
2966         * NTF (Paris) / Lambert zone IV
2967         */
2968        private void addEPSG27574() {
2969            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2970    
2971            if ( geoCS == null ) {
2972                return;
2973            }
2974    
2975            ParameterList param = new ParameterListImpl( pld );
2976            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
2977            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
2978            param.setParameter( "false_easting", 234.358 );
2979            param.setParameter( "false_northing", 4185861.369 );
2980            param.setParameter( "central_meridian", 2.33722916666667 );
2981            param.setParameter( "latitude_of_origin", 42.165 );
2982            param.setParameter( "standard_parallel1", 41.56038777777778 );
2983            param.setParameter( "standard_parallel2", 42.76766333333333 );
2984            param.setParameter( "scale_factor", 0.99994471 );
2985    
2986            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
2987    
2988            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27574", geoCS, projection,
2989                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
2990            save( cs );
2991        }
2992    
2993        /**
2994         * NTF (Paris) / France I (Deprecated for EPSG version 6.5)
2995         */
2996        private void addEPSG27581() {
2997            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
2998    
2999            if ( geoCS == null ) {
3000                return;
3001            }
3002    
3003            ParameterList param = new ParameterListImpl( pld );
3004            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3005            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3006            param.setParameter( "false_easting", 600000.0 );
3007            param.setParameter( "false_northing", 1200000.0 );
3008            param.setParameter( "central_meridian", 2.33722916666667 );
3009            param.setParameter( "latitude_of_origin", 49.5 );
3010            param.setParameter( "standard_parallel1", 48.59852277777780 );
3011            param.setParameter( "standard_parallel2", 50.39591166666670 );
3012            param.setParameter( "scale_factor", 0.999877341 );
3013    
3014            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3015    
3016            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27581", geoCS, projection,
3017                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3018            save( cs );
3019        }
3020    
3021        /**
3022         * NTF (Paris) / France II (France II etendu) (Deprecated for EPSG version 6.5)
3023         */
3024        private void addEPSG27582() {
3025            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3026    
3027            if ( geoCS == null ) {
3028                return;
3029            }
3030    
3031            ParameterList param = new ParameterListImpl( pld );
3032            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3033            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3034            param.setParameter( "false_easting", 600000.0 );
3035            param.setParameter( "false_northing", 2200000.0 );
3036            param.setParameter( "central_meridian", 2.33722916666667 );
3037            param.setParameter( "latitude_of_origin", 46.8 );
3038            param.setParameter( "standard_parallel1", 45.8989188888889 );
3039            param.setParameter( "standard_parallel2", 47.6960144444444 );
3040            param.setParameter( "scale_factor", 0.99987742 );
3041    
3042            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3043    
3044            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27582", geoCS, projection,
3045                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3046            save( cs );
3047        }
3048    
3049        /**
3050         * NTF (Paris) / France III (Deprecated for EPSG version 6.5)
3051         */
3052        private void addEPSG27583() {
3053            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3054    
3055            if ( geoCS == null ) {
3056                return;
3057            }
3058    
3059            ParameterList param = new ParameterListImpl( pld );
3060            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3061            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3062            param.setParameter( "false_easting", 600000.0 );
3063            param.setParameter( "false_northing", 3200000.0 );
3064            param.setParameter( "central_meridian", 2.33722916666667 );
3065            param.setParameter( "latitude_of_origin", 44.1 );
3066            param.setParameter( "standard_parallel1", 43.1992913888888889 );
3067            param.setParameter( "standard_parallel2", 44.9960938888888889 );
3068            param.setParameter( "scale_factor", 0.999877499 );
3069    
3070            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3071    
3072            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27583", geoCS, projection,
3073                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3074            save( cs );
3075        }
3076    
3077        /**
3078         * NTF (Paris) / France IV (Deprecated for EPSG version 6.5)
3079         */
3080        private void addEPSG27584() {
3081            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3082    
3083            if ( geoCS == null ) {
3084                return;
3085            }
3086    
3087            ParameterList param = new ParameterListImpl( pld );
3088            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3089            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3090            param.setParameter( "false_easting", 234.358 );
3091            param.setParameter( "false_northing", 4185861.369 );
3092            param.setParameter( "central_meridian", 2.33722916666667 );
3093            param.setParameter( "latitude_of_origin", 42.165 );
3094            param.setParameter( "standard_parallel1", 41.56038777777778 );
3095            param.setParameter( "standard_parallel2", 42.76766333333333 );
3096            param.setParameter( "scale_factor", 0.99994471 );
3097    
3098            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3099    
3100            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27584", geoCS, projection,
3101                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3102            save( cs );
3103        }
3104    
3105        /**
3106         * NTF (Paris) / Nord France (Deprecated for EPSG version 6.5)
3107         */
3108        private void addEPSG27591() {
3109            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3110    
3111            if ( geoCS == null ) {
3112                return;
3113            }
3114    
3115            ParameterList param = new ParameterListImpl( pld );
3116            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3117            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3118            param.setParameter( "false_easting", 600000.0 );
3119            param.setParameter( "false_northing", 200000.0 );
3120            param.setParameter( "central_meridian", 2.33722916666667 );
3121            param.setParameter( "latitude_of_origin", 49.5 );
3122            param.setParameter( "standard_parallel1", 48.59852277777780 );
3123            param.setParameter( "standard_parallel2", 50.39591166666670 );
3124            param.setParameter( "scale_factor", 0.999877341 );
3125    
3126            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3127    
3128            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27591", geoCS, projection,
3129                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3130            save( cs );
3131        }
3132    
3133        /**
3134         * NTF (Paris) / Centre France (Deprecated for EPSG version 6.5)
3135         */
3136        private void addEPSG27592() {
3137            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3138    
3139            if ( geoCS == null ) {
3140                return;
3141            }
3142    
3143            ParameterList param = new ParameterListImpl( pld );
3144            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3145            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3146            param.setParameter( "false_easting", 600000.0 );
3147            param.setParameter( "false_northing", 200000.0 );
3148            param.setParameter( "central_meridian", 2.33722916666667 );
3149            param.setParameter( "latitude_of_origin", 46.80 );
3150            param.setParameter( "standard_parallel1", 45.8989188888889 );
3151            param.setParameter( "standard_parallel2", 47.6960144444444 );
3152            param.setParameter( "scale_factor", 0.99987742 );
3153    
3154            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3155    
3156            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27592", geoCS, projection,
3157                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3158            save( cs );
3159        }
3160    
3161        /**
3162         * NTF (Paris) / Sud France (Deprecated for EPSG version 6.5)
3163         */
3164        private void addEPSG27593() {
3165            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3166    
3167            if ( geoCS == null ) {
3168                return;
3169            }
3170    
3171            ParameterList param = new ParameterListImpl( pld );
3172            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3173            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3174            param.setParameter( "false_easting", 600000.0 );
3175            param.setParameter( "false_northing", 200000.0 );
3176            param.setParameter( "central_meridian", 2.33722916666667 );
3177            param.setParameter( "latitude_of_origin", 44.1 );
3178            param.setParameter( "standard_parallel1", 43.1992913888888889 );
3179            param.setParameter( "standard_parallel2", 44.9960938888888889 );
3180            param.setParameter( "scale_factor", 0.999877499 );
3181    
3182            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3183    
3184            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27593", geoCS, projection,
3185                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3186            save( cs );
3187        }
3188    
3189        /**
3190         * NTF (Paris) / Corse (Deprecated for EPSG version 6.5)
3191         */
3192        private void addEPSG27594() {
3193            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4807" );
3194    
3195            if ( geoCS == null ) {
3196                return;
3197            }
3198    
3199            ParameterList param = new ParameterListImpl( pld );
3200            param.setParameter( "semi_major", geoCS.getHorizontalDatum().getEllipsoid().getSemiMajorAxis() );
3201            param.setParameter( "semi_minor", geoCS.getHorizontalDatum().getEllipsoid().getSemiMinorAxis() );
3202            param.setParameter( "false_easting", 234.358 );
3203            param.setParameter( "false_northing", 185861.369 );
3204            param.setParameter( "central_meridian", 2.33722916666667 );
3205            param.setParameter( "latitude_of_origin", 42.165 );
3206            param.setParameter( "standard_parallel1", 41.56038777777778 );
3207            param.setParameter( "standard_parallel2", 42.76766333333333 );
3208            param.setParameter( "scale_factor", 0.99994471 );
3209    
3210            Projection projection = csFactory.createProjection( "My projection", "Lambert_Conformal_Conic_2SP", param );
3211    
3212            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27594", geoCS, projection,
3213                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3214            save( cs );
3215        }
3216    
3217        /**
3218         * <p>
3219         * NZGD49 / North Island Grid
3220         * </p>
3221         * <p>
3222         * alias = GD49 / North Island Grid
3223         * </p>
3224         * <p>
3225         * New Zealand - North Island.
3226         * </p>
3227         * <p>
3228         * Large and medium scale topographic mapping and engineering survey. Sears 1922 British
3229         * foot-metre conversion factor applied to ellipsoid. Superseded by 27200 (GD49 / New Zealand
3230         * Map Grid) in 1972.
3231         * </p>
3232         * notice: british yards are used as units!
3233         */
3234        private void addEPSG27291() {
3235            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4272" );
3236    
3237            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3238    
3239            ParameterList param = new ParameterListImpl( pld );
3240            param.setParameter( "hemisphere", -1 );
3241            param.setParameter( "semi_major", ellipsoid.getSemiMajorAxis() );
3242            param.setParameter( "semi_minor", ellipsoid.getSemiMinorAxis() );
3243            param.setParameter( "false_easting", 300000.0 );
3244            param.setParameter( "false_northing", 400000.0 );
3245            param.setParameter( "central_meridian", -175.5 );
3246            param.setParameter( "latitude_of_origin", -39.0 );
3247            param.setParameter( "scale_factor", 1.0 );
3248    
3249            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", param );
3250    
3251            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27291", geoCS, projection,
3252                                                                                      Unit.BRITISHYARD, AxisInfo.X,
3253                                                                                      AxisInfo.Y );
3254            save( cs );
3255        }
3256    
3257        /**
3258         * <p>
3259         * NZGD49 / South Island Grid
3260         * </p>
3261         * <p>
3262         * alias = GD49 / South Island Grid
3263         * </p>
3264         * <p>
3265         * New Zealand - South Island.
3266         * </p>
3267         * <p>
3268         * Large and medium scale topographic mapping and engineering survey. Sears 1922 British
3269         * foot-metre conversion factor applied to ellipsoid. Superseded by 27200 (GD49 / New Zealand
3270         * Map Grid) in 1972.
3271         * </p>
3272         * notice: british yards are used as units!
3273         */
3274        private void addEPSG27292() {
3275            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4272" );
3276    
3277            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3278    
3279            ParameterList param = new ParameterListImpl( pld );
3280            param.setParameter( "hemisphere", -1 );
3281            param.setParameter( "semi_major", ellipsoid.getSemiMajorAxis() );
3282            param.setParameter( "semi_minor", ellipsoid.getSemiMinorAxis() );
3283            param.setParameter( "false_easting", 500000.0 );
3284            param.setParameter( "false_northing", 500000.0 );
3285            param.setParameter( "central_meridian", -171.5 );
3286            param.setParameter( "latitude_of_origin", -44.0 );
3287            param.setParameter( "scale_factor", 1.0 );
3288    
3289            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", param );
3290    
3291            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27292", geoCS, projection,
3292                                                                                      Unit.BRITISHYARD, AxisInfo.X,
3293                                                                                      AxisInfo.Y );
3294            save( cs );
3295        }
3296    
3297        /**
3298         * <p>
3299         * NNZGD49 / New Zealand Map Grid
3300         * </p>
3301         * <p>
3302         * alias = GD49 / NZ Map Grid
3303         * </p>
3304         * <p>
3305         * New Zealand
3306         * </p>
3307         * <p>
3308         * Large and medium scale topographic mapping and engineering survey. Supersedes 27291 (NZGD49 /
3309         * North Island Grid) and 27292 (NZGD49 / South Island Grid) from 1972.
3310         */
3311        private void addEPSG27200() {
3312            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4272" );
3313    
3314            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3315    
3316            ParameterList param = new ParameterListImpl( pld );
3317            param.setParameter( "hemisphere", -1 );
3318            param.setParameter( "semi_major", ellipsoid.getSemiMajorAxis() );
3319            param.setParameter( "semi_minor", ellipsoid.getSemiMinorAxis() );
3320            param.setParameter( "false_easting", 2510000.0 );
3321            param.setParameter( "false_northing", 6023150.0 );
3322            param.setParameter( "central_meridian", 173.0 );
3323            param.setParameter( "latitude_of_origin", -41.0 );
3324            param.setParameter( "scale_factor", 1.0 );
3325    
3326            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", param );
3327    
3328            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:27200", geoCS, projection,
3329                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3330    
3331            save( cs );
3332        }
3333    
3334        /**
3335         * 
3336         */
3337        private void addEPSG26716() {
3338            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4267" );
3339    
3340            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3341    
3342            double centerMeridian = -87.000000;
3343            double easting = 500000.000000;
3344            double northing = 0.0;
3345            double scaleFactor = 0.9996;
3346    
3347            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
3348                                                                new Point2D.Double( centerMeridian, 0 ),
3349                                                                new Point2D.Double( easting, northing ), scaleFactor );
3350    
3351            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:26716", geoCS, projection,
3352                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3353            save( cs );
3354        }
3355    
3356        /**
3357         * <p>
3358         * RD new / Amersfoort Rijksdriehoekstelsel
3359         * </p>
3360         * 
3361         * <p>
3362         * The Netherlands
3363         * </p>
3364         * <p>
3365         * Large and medium scale topographic mapping and engineering survey. Supersedes 28991
3366         * (Amersfoort / RD Old)
3367         * 
3368         */
3369        private void addEPSG28992() {
3370            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4289" );
3371    
3372            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3373            ParameterList param = new ParameterListImpl( pld );
3374            param.setParameter( "semi_major", ellipsoid.getSemiMajorAxis() );
3375            param.setParameter( "semi_minor", ellipsoid.getSemiMinorAxis() );
3376            param.setParameter( "false_easting", 155000.0 );
3377    
3378            param.setParameter( "false_northing", 463000.0 );
3379            param.setParameter( "central_meridian", 5.38763889 );
3380            param.setParameter( "latitude_of_origin", 52.15616055 );
3381            param.setParameter( "scale_factor", 0.99990790 );
3382    
3383            Projection projection = csFactory.createProjection( "My projection", "Stereographic", param );
3384    
3385            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:28992", geoCS, projection,
3386                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3387            save( cs );
3388        }
3389    
3390        private void addEPSG26912() {
3391            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4269" );
3392    
3393            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3394    
3395            double centerMeridian = -111.0;
3396            double easting = 500000.0;
3397            double northing = 0.0;
3398            double scaleFactor = 0.9996;
3399    
3400            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
3401                                                                new Point2D.Double( centerMeridian, 0 ),
3402                                                                new Point2D.Double( easting, northing ), scaleFactor );
3403    
3404            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:26912", geoCS, projection,
3405                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3406            save( cs );
3407        }
3408    
3409        private void addEPSG2152() {
3410    
3411            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4269" );
3412    
3413            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3414    
3415            double centerMeridian = -111.0;
3416            double easting = 500000.0;
3417            double northing = 0.0;
3418            double scaleFactor = 0.9996;
3419    
3420            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
3421                                                                new Point2D.Double( centerMeridian, 0 ),
3422                                                                new Point2D.Double( easting, northing ), scaleFactor );
3423    
3424            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:2152", geoCS, projection,
3425                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3426            save( cs );
3427        }
3428    
3429        private void addEPSG41001() {
3430            GeographicCoordinateSystem geoCS = (GeographicCoordinateSystem) getCSByName( "EPSG:4269" );
3431    
3432            Ellipsoid ellipsoid = geoCS.getHorizontalDatum().getEllipsoid();
3433    
3434            double centerMeridian = -90.0;
3435            double easting = 0.0;
3436            double northing = 0.0;
3437            double scaleFactor = 0.9996;
3438    
3439            Projection projection = csFactory.createProjection( "My projection", "Transverse_Mercator", ellipsoid,
3440                                                                new Point2D.Double( centerMeridian, 0 ),
3441                                                                new Point2D.Double( easting, northing ), scaleFactor );
3442    
3443            ProjectedCoordinateSystem cs = csFactory.createProjectedCoordinateSystem( "EPSG:41001", geoCS, projection,
3444                                                                                      Unit.METRE, AxisInfo.X, AxisInfo.Y );
3445            save( cs );
3446        }
3447    
3448    }