package com.revolsys.gis.esri.gdb.file.test; import java.io.File; import com.revolsys.datatype.DataType; import com.revolsys.datatype.DataTypes; import com.revolsys.geometry.model.Geometry; import com.revolsys.geometry.model.GeometryFactory; import com.revolsys.gis.esri.gdb.file.FileGdbRecordStore; import com.revolsys.gis.esri.gdb.file.FileGdbRecordStoreFactory; import com.revolsys.identifier.Identifier; import com.revolsys.io.FileUtil; import com.revolsys.io.PathName; import com.revolsys.record.ArrayRecord; import com.revolsys.record.Record; import com.revolsys.record.property.FieldProperties; import com.revolsys.record.schema.FieldDefinition; import com.revolsys.record.schema.RecordDefinitionImpl; public class GeometryTest { public static void main(final String[] args) { for (final GeometryFactory geometryFactory : new com.revolsys.geometry.model.GeometryFactory[] { GeometryFactory.fixed(3005, 1000.0, 1000.0), GeometryFactory.fixed(3005, 1000.0, 1000.0, 1.0) }) { writeTestFile(geometryFactory, "POINT(1185093.8356 385662.9221)"); writeTestFile(geometryFactory, "LINESTRINGZ(844395.448 1343937.441 1201.0,844304.98 1344019.53 1202.0,844299.206 1344024.791 1203.0,844245.375 1344075.229 1203.0,844206.127 1344116.019 1204.0,844205.172 1344117.062 1204.0)"); writeTestFile(geometryFactory, "POLYGON((1185074.5212745096 385696.922,1185127.0702941176 385696.6082745098,1185126.442843137 385650.490627451,1185074.5212745096 385651.4318039216,1185074.5212745096 385696.922))"); writeTestFile(geometryFactory, "MULTIPOINT((1184946.014533333 385736.96064117656),(1184946.9729294113 385705.81276862754),(1184964.2240588232 385731.210264706),(1184973.3288215683 385694.7912137255),(1184976.2040098037 385721.6263039217),(1184983.391980392 385735.52304705896),(1184983.871178431 385736.96064117656),(1184992.0175450977 385699.1039960785))"); writeTestFile(geometryFactory, "MULTILINESTRING((1184910.0746803917 385732.64785882365,1185008.310278431 385722.58470000006,1184961.828068627 385686.64484705887,1184910.0746803917 385711.0839470589,1184889.9483627446 385711.5631450981),(1184888.0315705878 385689.04083725496,1184936.909770588 385664.6017372549,1184907.6786901958 385646.3922117647,1184876.0516196075 385664.6017372549,1184899.0531254897 385628.6618843137,1184856.4044999995 385661.72654901963))"); // writeTestFile( // geometryFactory2d, // "MULTIPOLYGON(((1184983.391980392 385713.479937255,1184960.8696725487 // 385694.7912137255,1184977.162405882 // 385667.9561235294,1185007.3518823527 // 385664.6017372549,1185011.1854666665 // 385713.9591352942,1184983.391980392 // 385713.479937255)),((1184917.26265098 // 385712.52154117654,1184907.1994921565 // 385670.3521137255,1184958.4736823526 // 385669.8729156863,1184935.9513745094 // 385689.9992333334,1184958.9528803919 // 385713.00073921576,1184917.26265098 385712.52154117654)))"); } } public static void writeTestFile(final GeometryFactory geometryFactory, final String wkt) { final Geometry geometry = geometryFactory.geometry(wkt); final DataType geometryDataType = DataTypes.getDataType(geometry); String name = "/" + geometryDataType.getName(); if (geometryFactory.hasZ()) { name += "Z"; } final File file = new File("target/test-data/" + name + ".gdb"); FileUtil.deleteDirectory(file); final PathName pathName = PathName.newPathName(name); RecordDefinitionImpl recordDefinition = new RecordDefinitionImpl(pathName); recordDefinition.addField("ID", DataTypes.INT, true); final FieldDefinition geometryField = recordDefinition.addField("Geometry", geometryDataType, true); geometryField.setProperty(FieldProperties.GEOMETRY_FACTORY, geometryFactory); recordDefinition.setIdFieldName("ID"); final FileGdbRecordStore recordStore = FileGdbRecordStoreFactory.newRecordStore(file); recordStore.initialize(); recordDefinition = (RecordDefinitionImpl)recordStore.getRecordDefinition(recordDefinition); final Record object = new ArrayRecord(recordDefinition); object.setIdentifier(Identifier.newIdentifier(1)); object.setGeometryValue(geometry); recordStore.insertRecord(object); final Record object2 = recordStore.getRecord(pathName, Identifier.newIdentifier(1)); if (!DataType.equal(object, object2)) { System.out.println("Not Equal"); System.out.println(object); System.out.println(object2); } recordStore.close(); } }