I have collections of polygon features. Each point in a polygon has local
cooridantes (x y values) and geodetic Coordinates (latitude and longitude
in decimal degree computed externaly) i can export the shape file(vector)
with xy values using geotools.

How can i export the data by including geodetic coordinates?


Point - X Y values -  correspoinding latitude and longitude

Polygon points have coordinates with (x y values) i have find the latlong
values for each point in the shapefile externally by using rubbersheeting
method given in
http://www.corrmap.com/features/rubber-sheeting_transformation.php now i
need to project the lat long values into the shapefile along with x y
values of the points.


Polygons [ p1,p2,p3,p4........soon]
p1 - (x ,y) already in the shapefile (lat, long) computed externally.

id-->*******x********y***************lon*********lat

79-->(8912.811,1481.9799):(80.205185,13.336138)

80-->(8912.811,1481.9766):(80.205185,13.336108)

93-->(8912.656,1481.9835):(80.2038,13.336171)

140-->(8912.8125,1482.0161):(80.20521,13.336465)


My code for exporting shape file with x and y coordinates and i need to
include projection (lat long).

    /**
     *  Writes the Shapes in the featureList into the given File
     *
     *  @param theFile Reference to the File
     *  @param featureList The list of features to be written
     *
     *  @return TRUE if successfully written; Else FALSE
     */
    public boolean writeShape(File theFile, List featureList) throws
Exception
    {
        ShapefileDataStoreFactory dSFactory = new
ShapefileDataStoreFactory();

        Map params = new HashMap();
        params.put("url", theFile.toURI().toURL());
        params.put("create spatial index", Boolean.TRUE);

        ShapefileDataStore newDataStore =
                     (ShapefileDataStore)
dSFactory.createNewDataStore(params);

        newDataStore.createSchema(featureBuilder.getFeatureType());
        newDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);

        String typeName = newDataStore.getTypeNames()[0];
        SimpleFeatureSource featureSource =

 newDataStore.getFeatureSource(typeName);

        boolean success = false;
        if (featureSource instanceof SimpleFeatureStore)
        {
            SimpleFeatureStore featureStore =
(SimpleFeatureStore)featureSource;

            SimpleFeatureCollection collection =
                      new
ListFeatureCollection(featureBuilder.getFeatureType(),
                                                featureList);

            Transaction transaction = new DefaultTransaction("create");
            featureStore.setTransaction(transaction);

            try
            {
                featureStore.addFeatures(collection);
                transaction.commit();
                success = true;
            }
            catch (Exception exp)
            {
                if (DEBUG) exp.printStackTrace();
                transaction.rollback();
                success = false;
            }
            finally
            {
                transaction.close();
            }
        }

        if (success) showMessage(sCreated);
        return success;
    }

    private SimpleFeatureBuilder createFeatureBuilder()
    {
        SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
        builder.setCRS(DefaultGeographicCRS.WGS84);
        builder.setName(plotName);

        builder.add(sPolygon, Polygon.class);
        builder.length(32).add(plotName, String.class);
        builder.length(32).add(sArea, String.class);

        final SimpleFeatureType featureType = builder.buildFeatureType();
        return new SimpleFeatureBuilder(featureType);
    }

    public boolean addPolygonFeature(List featureList, Point3D[] thePoints,
                                     String polyId, float area) throws
Exception
    {
        Polygon aPoly = createPolygon(thePoints);

        if (aPoly == null)
        {
            StringBuffer buf = new StringBuffer();
            buf.append(WError1);
            buf.append(polyId);
            buf.append(WError2);
            String error = buf.toString();

            int opt = GUIBase.showConfirmDialog(error, "Confirm", GUI_YN);
            return (opt == GUIBase.GUI_YES);
        }

        SimpleFeature feature = featureBuilder.buildFeature(null);
        feature.setAttribute(plotName, polyId);
        feature.setAttribute(sPolygon, aPoly);
        feature.setAttribute(sArea, area);
        featureList.add(feature);
        return true;
    }

    /**
     *  Creates a polygon feature from Array of FMBPoints
     *
     *  @param thePoints Array of Point3Ds
     *
     *  @return Reference to the Polygon object
     */
    public static Polygon createPolygon(Point3D[] thePoints)
    {
        int count = (thePoints == null) ? 0 : thePoints.length;
        if (count < 1) return null;

        // Store Coordinates of polygon as a LINESTRING.
        StringBuffer buffer = new StringBuffer();
        buffer.append("POLYGON((");

        for (int i=0; i<count; i++)
        {
            buffer.append(thePoints[i].x);
            buffer.append(SPACE);
            buffer.append(thePoints[i].y);
            buffer.append(COMMA);
        }

        String lineString = buffer.toString();
        lineString = lineString.substring(0, lineString.length()-1) + "))";
        if (DEBUG) System.out.println(lineString);

        try
        {
            // Creating the Geometry (Polygon)
            return (Polygon) wktReader.read(lineString);
        }
        catch (Exception excep) { }

        return null;
    }



/*- – - – - – – - – – - – – - – – - – – - – – - – – - – – - – – - – – - -

Please consider your environmental responsibility.
Before printing this e-mail message, ask yourself whether you really need a
hard copy.

Life is what happens to you, while you're busy making other plans

We do not inherit the earth from our ancestors; we borrow it from our
children.
Leave them a living planet reduce your carbon foot print.
------------------------------------------------------------
--------------------------------*/






yours suri chinna
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to