[Gvsig_desarrolladores] Dependencia geoapi no encontrada

Fernando González fergonco en gmail.com
Mar Abr 12 16:50:39 CEST 2011


Bueno, pues ya tengo lo que quería. El código[1] lee un DXF itera por
todos los vértices de todas las geometrías y construye un gran
multipunto con todos ellos, que era lo que quería. Seguro que no es la
manera más ortodoxa (tengo un warning por deprecated) pero funciona,
vaya. El código lo meto en un proyecto maven al que modifico el pom
para que se parezca a esto[2].

Quiero aprovechar para reconocer el gran trabajo que hay en el tema de
organizar el build. Poner orden ahí ha tenido que ser brutal. Me
cuesta entender el hecho de que tenga que incluir
org.gvsig:org.gvsig.symbology:impl y org.gvsig:org.gvsig.symbology. Si
no he entendido mal, este último es la API mientras que el primero es
la implementación de dicha API. ¿No debería incluirse la dependencia
de forma transitiva? Es posible que me esté confundiendo con el tema
de los clasificadores, que no he utilizado nunca, pero si la
implementación fuera un proyecto que dependiera de la API, sólo sería
necesario incluir las distintas implementaciones (las APIs se
incluirían de forma transitiva), ¿no?

No sé si me estoy rallando (si es así decírmelo sin problemas), pero
supongo que el objetivo de tener API e implementaciones por separado
es que se pueda cambiar de implementación fácilmente. Me parece muy
interesante, pero para que esto sea fácil de usar se podrían poner
algunos poms de ejemplos con las combinaciones de implementaciones más
fácilmente utilizadas. Mientras escribo, se me ocurre que esto tiene
que ver con el tema del org.gvsig.core.maven.dependencies que
comentaba César, pero que yo no he entendido muy bien. Más adelante le
echaré un vistazo a eso a ver.

Bueno, gracias por la ayuda y por el trabajo. Un saludo.



[1]
	public static void main(String[] args) throws Exception {
		new DefaultLibrariesInitializer().fullInitialize();
		DataManager manager = DALLocator.getDataManager();
		DXFStoreParameters params = (DXFStoreParameters) manager
				.createStoreParameters(DXFStoreProvider.NAME);
		params.setFile("/home/fergonco/b/projects/geoweb/dxf/ejemplo7.dxf");
		params.setCRS("EPSG:23030");

		FeatureStore store = (FeatureStore) manager.createStore(params);
		FeatureSet features = store.getFeatureSet();

		DisposableIterator it = features.iterator();
		GeometryFactory jtsGeometryFactory = new GeometryFactory();
		HashSet<Coordinate> points = new HashSet<Coordinate>();
		while (it.hasNext()) {
			Feature feature = (Feature) it.next();
			Geometry geom = feature.getDefaultGeometry();
			PathIterator gp = geom.getPathIterator(null);
			double[] coords = new double[6];
			while (!gp.isDone()) {
				gp.currentSegment(coords);
				points.add(new Coordinate(coords[0], coords[1]));
				gp.next();
			}
		}
		System.out.println(jtsGeometryFactory.createMultiPoint(points
				.toArray(new Coordinate[0])));
		it.dispose();
		features.dispose();
		store.dispose();
	}

[2]

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.test</groupId>
	<artifactId>dxftest</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>dxftest</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<repositories>
		<repository>
			<id>gvsig</id>
			<name>Repositorio gvSIG</name>
			<url>
				http://gvsig-desktop.forge.osor.eu/downloads/pub/projects/gvSIG-desktop/maven-repository/
			</url>
		</repository>
		<repository>
			<id>osgeo</id>
			<name>Open Source Geospatial Foundation</name>
			<url>http://download2.osgeo.org/webdav/geotools</url>
			<releases>
				<enabled>true</enabled>
				<updatePolicy>never</updatePolicy>
				<checksumPolicy>warn</checksumPolicy>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.compat</artifactId>
			<classifier>se</classifier>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.symbology</artifactId>
			<classifier>impl</classifier>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.symbology</artifactId>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.fmap.dal.file</artifactId>
			<classifier>store.dxf</classifier>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.fmap.dal.file</artifactId>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.fmap.geometry</artifactId>
			<classifier>impl</classifier>
			<version>2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.gvsig</groupId>
			<artifactId>org.gvsig.projection</artifactId>
			<classifier>cresques-impl</classifier>
			<version>2.0-SNAPSHOT</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-eclipse-plugin</artifactId>
				<configuration>
					<downloadSources>true</downloadSources>
					<downloadJavadocs>true</downloadJavadocs>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>


Más información sobre la lista de distribución gvSIG_desarrolladores