DefaultFeatureResult Problem

Hallo,

ich programmiere zur Zeit ein umfangreiches Programm, komme jedoch an einer Stelle nicht weiter...

Um nicht mein ganzes Programm erklären zu müssen , erkläre ich nur diesen Ausschnitt...

Ich habe eine Shapefile (Kontinente der Welt werden als Polygone dargestellte) und sagen wir mal 2 beliebige Koordinaten.

Ich versuche diese 2 Punkte miteinander zu verbinden um dann festzustellen, ob die erstellte Linie ein Feature aus dieser Shapefile berührt/schneidet... Falls diese sich berühren soll als Wert "true", falls nicht der Wert "false" ausgegeben werden..

Hier mein Programmausschnitt mit 2 bel. Punkten und einzulesender Shapefile...

.......

Java:
File landmask = new File("C:\\....Shapefile.....");
        if (landmask == null) {
            return;
        }
        FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
        FeatureSource featureSource = landmaskstore.getFeatureSource();

            Coordinate[] coordinates = new Coordinate[2];

            coordinates[0]= new Coordinate(random_x1 , random_y1);
            coordinates[1]= new Coordinate(random_x2,random_y2);

boolean landIntersection = getIntersectionLineLand(coordinates, featureSource);

if (landIntersection == true){
........
}
else{
........
}

........

Java:
    public static boolean getIntersectionLineLand(Coordinate[] coordinates, FeatureSource featureSource) {

        FeatureCollection<SimpleFeatureType, SimpleFeature> features = null;
        try {
            FeatureSource<SimpleFeatureType, SimpleFeature> featureSource2 = featureSource;
            String geomAttrName = featureSource2.getSchema().getGeometryDescriptor().getLocalName();
            CoordinateReferenceSystem crs = CRS.decode("EPSG:4326");
            Hints hints = GeoTools.getDefaultHints();
            hints.put(Hints.JTS_SRID, 4326);
            hints.put(Hints.CRS, crs);
            FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(hints);
            GeometryFactory gf = JTSFactoryFinder.getGeometryFactory(hints);
            coordinates[0] = new Coordinate(coordinates[0].x,coordinates[0].y);
            coordinates[1] = new Coordinate(coordinates[1].x,coordinates[1].y);
            LineString line = gf.createLineString(coordinates);
            Intersects filter = ff.intersects(ff.property(geomAttrName), ff.literal(line));
            features = featureSource2.getFeatures(filter);
            System.out.println(features);
             
        } catch (Exception ex) {
            System.out.println(ex);
        }
        
        
      if(features instanceof DefaultFeatureResults ){
          return false;
      }
        
        else{
        return true;
        }
    }

Mein Ergebnis bleibt ein DefaultFeatureResult egal ob die Linie die Shape schneidet oder nicht. Wäre toll wenn mir jemand weiterhelfen könnte bzw. mir erklären könnte wo mein Fehler ist..

Mit besten Grüßen
Der Problematiker ;)
 
Zuletzt bearbeitet:

Crian

Top Contributor
Nicht dein Problem, aber

Java:
if (landIntersection == true){

ist hässlich. Da reicht

Java:
if (landIntersection){

[EDIT]Beim lesen des Codes sind die fraglichen Stellen vermutlich

Java:
            Intersects filter = ff.intersects(ff.property(geomAttrName), ff.literal(line));
            features = featureSource2.getFeatures(filter);

Ich kenne die ganzen Klassen nicht, die du da verwendest. Sind die selbst geschrieben?

Wenn nicht: Kannst du da vielleicht trotzdem hinein debuggen?[/EDIT]

[EDIT]Wofür machst du

Java:
            coordinates[0] = new Coordinate(coordinates[0].x,coordinates[0].y);
            coordinates[1] = new Coordinate(coordinates[1].x,coordinates[1].y);

? Ist
Code:
Coordinate
auch eine Klasse von dir?

[TIPP]Da
Code:
getIntersectionLineLand
intern ja auch auf die Verwendung von zwei Koordinaten ausgelegt ist, würde ich auch lieber explizit zwei Koordinaten übergeben, statt ein Array mit zwei Koordinaten.[/TIPP][/EDIT]

[EDIT]Falls eine Exception auftritt, gibst du im Moment true zurück. Ist das so gewollt?[/EDIT]
 
Zuletzt bearbeitet:
Hey :)

Nein die Klassen sind nicht von mir selbst geschrieben

import com.vividsolutions.jts.geom.Coordinate;
import org.geotools.data.simple.SimpleFeatureSource;

also "normale" geotools.

Java:
            coordinates[0] = new Coordinate(coordinates[0].x,coordinates[0].y);
            coordinates[1] = new Coordinate(coordinates[1].x,coordinates[1].y);

ist um die koordinaten (welche in Shape miteinfliesen) zu definieren. Man kann auch "Point" zu Koordinaten umwandeln.

"hinein debuggen" ist wohl nicht so meine Stärke, bin doch noch ein kleiner Anfänger =)

Das Problem denke ich ist, das er beim lesen der Feature nur die "Attributtabelle" der Shape empfängt aber nicht die eizelnen Koordinaten der Areale der Feature ODER intersect stimmt nicht, wobei ich mir eigentlich doch recht sicher bin...

EDIT:

Das True ist erwünscht da es bedeutet, dass ein Feature geschnitten wurde :)

Zu: Da getIntersectionLineLand intern ja auch auf die Verwendung von zwei Koordinaten ausgelegt ist, würde ich auch lieber explizit zwei Koordinaten übergeben, statt ein Array mit zwei Koordinaten.

-> Ich habe es als Array geschrieben da dies nur ein Ausschnitt aus dem Programm ist, Später jedoch mehrer Punkte gelesen werden müssen :)

EDIT2:

GeoTools The Open Source Java GIS Toolkit &mdash; GeoTools
 
Zuletzt bearbeitet:

Crian

Top Contributor
Hey :)

Nein die Klassen sind nicht von mir selbst geschrieben

import com.vividsolutions.jts.geom.Coordinate;
import org.geotools.data.simple.SimpleFeatureSource;

also "normale" geotools.

Gut ich hoffe, damit kennt sich hier jemand besser aus als ich. Ich kenne die nämlich nicht.

Java:
            coordinates[0] = new Coordinate(coordinates[0].x,coordinates[0].y);
            coordinates[1] = new Coordinate(coordinates[1].x,coordinates[1].y);

ist um die koordinaten (welche in Shape miteinfliesen) zu definieren. Man kann auch "Point" zu Koordinaten umwandeln.

Du hast die Koordinaten aber doch vor dem Aufruf schon mit
Java:
            Coordinate[] coordinates = new Coordinate[2];
 
            coordinates[0]= new Coordinate(random_x1 , random_y1);
            coordinates[1]= new Coordinate(random_x2,random_y2);

erzeugt und nun kopierst du sie nochmal über.

"hinein debuggen" ist wohl nicht so meine Stärke, bin doch noch ein kleiner Anfänger =)
Was nutzt du, um deinen Quellcode zu bearbeiten? Falls es Eclipse ist, ist das Debuggen recht einfach, man doppelklickt in der Zeile, ab der man das Programm beobachten will links daneben in die graue Spalte vor den Zeilennummern (falls eingeschaltet) und drückt dann F11. Das Programm wird bis zum ersten Mal, wo es an dieser Stelle vorbeikommt ausgeführt, die Sicht wechselt in den Debug-Modus und dann hält es an, du kannst Variableninhalte betrachten und weitere Zeieln einzeln ausführen (F6) oder in die dortigen Aufrufe einsteigen (F5).

Bei Netbeans geht das sicher auch auf ähnliche Weise.

Das Problem denke ich ist, das er beim lesen der Feature nur die "Attributtabelle" der Shape empfängt aber nicht die eizelnen Koordinaten der Areale der Feature ODER intersect stimmt nicht, wobei ich mir eigentlich doch recht sicher bin...

Wenn dir das Debuggen nicht geheuer ist, bau einen Haufen
Code:
System.out.println()
ein und lass dir alle Informationen über das Shape und die Linie an der entscheidenden Stelle ausgeben. Vielleicht ist der Inhalt doch anders als erwartet?
 

Crian

Top Contributor
EDIT:

Das True ist erwünscht da es bedeutet, dass ein Feature geschnitten wurde :)

Kleine, grundlegende Überlegung: Was prüft man mit der if-Anweisung?

Code:
if (bedingung) {
    // wird ausgeführt, wenn Bedingung wahr ist
}
else {
    // wird ausgeführt, wenn die bedingung falsch ist
}

Natürlich kann man das auch als

Code:
if (bedingung == true) {
    // wird ausgeführt, wenn Bedingung wahr ist
}
else {
    // wird ausgeführt, wenn die Bedingung falsch ist
}

schreiben. Aber das ist doppelt gemoppelt und ändert nicht an der Auswertung. Um "ganz sicher" zu gehen, könnte man dann ja auch


Code:
if ((bedingung == true) == true) {
    // wird ausgeführt, wenn Bedingung wahr ist
}
else {
    // wird ausgeführt, wenn die Bedingung falsch ist
}

schreiben ;)

Zu: Da getIntersectionLineLand intern ja auch auf die Verwendung von zwei Koordinaten ausgelegt ist, würde ich auch lieber explizit zwei Koordinaten übergeben, statt ein Array mit zwei Koordinaten.

-> Ich habe es als Array geschrieben da dies nur ein Ausschnitt aus dem Programm ist, Später jedoch mehrer Punkte gelesen werden müssen :)

Ok, das hatte ich mir schon fast gedacht.

Danke da werd ich mal schauen, vielleicht lässt sich ja etwas erkennen.
 

Crian

Top Contributor
import com.vividsolutions.jts.geom.Coordinate;
import org.geotools.data.simple.SimpleFeatureSource;

Arbeiten die wirklich zusammen? Es gibt immerhin auch bei den Geotools eine
Code:
Coordinates2D
Klasse. Na ich hab mir das mal runtergeladen, da ich das Thema spannend finde. Mal sehen.
 
Danke erstmal an Dich :)

Das die Koordinaten überschrieben werden bzw einfach 1 zu 1 wiedergegeben werden habe ich nur jetz gerade abgeändert, da ich mich hier auf den Fall mit nur 2 Koordinaten beziehe, später aber, wie gesagt, mehr Punkte miteinander verbunden werden.

Debug hab ich natürlich drüberlaufen lassen (ich arbeite mi netbeans =) ) und es setzt meine Feature jedesmal "null" aber übernimmt trotzdem die Werte der Attributtabelle was mich zu meine vorhin geschrieben Ergebnis kommen lässt, das es ein Problem mit der Area bzw Polygon gibt.

Die Problematik mit "if" und "else" ist hier einfach, das es nicht wirklich ein "richtig" und falsch" gibt.
Ich habe mir die features mit System.out ausgeben lassen da ich sehen wollte wie er einen nicht Schnittpunkt d.h. beide Punkte liegen nebeneinander auf dem "Meer"/"Nullpolygon" oder wie auch immer, ausgibt -> org.geotools.data.DefaultFeatureResults@18b3280

Dies war der Grund für
Java:
 if(features instanceof DefaultFeatureResults ){
          return false;
      }

Jedoch schreibt er mir halt auch bei Schneidung mit einem Polygon aus der Shapefile ein DeafultFeatureResult was mich darauf bringt das der Fehler vorher besteht.

EDIT: Soweit ich weiß arbeiten diese zusammen da auch das "Linepolygon" unter

import com.vividsolutions.jts.geom.LineString;

verwendet wird.

Und eine "Point" zu "coordinate" auch darüber läuft

import com.vividsolutions.jts.geom.Point;

EDIT2:

Die Shape hat kein Vorgeschriebenes koordinatensystem an sich sondern arbeitet mit degree.
Mein Programm an sich arbeitet aber sonst auch einwandfri d.h. es sollte da keine Probleme geben (nur eine Überlegung am Rande).

Solltest Du dir die Shape ansehen wollten ->

Java:
package extrapolation;

import java.io.File;

import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.geotools.swing.data.JFileDataStoreChooser;

/**
 * Prompts the user for a shapefile and displays the contents on the screen in a map frame.
 * <p>
 * This is the GeoTools Quickstart application used in documentationa and tutorials. *
 */
public class shapefileopener {

    /**
     * GeoTools Quickstart demo application. Prompts the user for a shapefile and displays its
     * contents on the screen in a map frame
     */
    public static void main(String[] args) throws Exception {
        // display a data store file chooser dialog for shapefiles
        File file = JFileDataStoreChooser.showOpenFile("shp", null);
        if (file == null) {
            return;
        }

        FileDataStore store = FileDataStoreFinder.getDataStore(file);
        SimpleFeatureSource featureSource = store.getFeatureSource();

        // Create a map content and add our shapefile to it
        MapContent map = new MapContent();
        map.setTitle("Shapefileopener");

        Style style = SLD.createSimpleStyle(featureSource.getSchema());
        Layer layer = new FeatureLayer(featureSource, style);
        map.addLayer(layer);

        // Now display the map
        JMapFrame.showMap(map);
    }

}
 
Zuletzt bearbeitet:

Crian

Top Contributor
Das ist sicher hilfreich. Im Moment frage ich mich, welche der Jars aus der heruntergeladenen Bibliothek ich wohl alle einbinden muss.
 
Du kannst alle einbinden bis auf
"gt-epsg-extension-8.0-RC1"
"gt-epsg-postgresql-8.0-RC1"
"gt-epsg-wkt-8.0-RC1"

("gt-epsg-hsql-8.0-RC1" aber miteinbinden)

da es hier manchmal zu Komplikationen kommt
 

Crian

Top Contributor
Ich bekomme bei

Java:
SimpleFeatureSource featureSource = store.getFeatureSource();

leider eine Nullpointer-Exception. Da ist store wohl null. Ich hab die .shp-Datei aus deinem Shape ausgewählt.
 
Sehr komisch da deine landmaskstore vorher nicht null sein kann wegen

Java:
        if (landmask == null) {
            return;
        }

Also da habe ich keine Probleme

Benutze:

import org.geotools.data.FileDataStore;
import org.geotools.data.FeatureSource;
import org.geotools.data.FileDataStoreFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
 

Crian

Top Contributor
[JAVA=35] @SuppressWarnings("rawtypes")
private FeatureSource loadShape() throws IOException, URISyntaxException {
URL url = GeoToolsTest.class.getResource("shape/world.shp");
File landmask = new File(url.toURI());
FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
FeatureSource featureSource = landmaskstore.getFeatureSource();
return featureSource;
}
[/code]

So sieht meine Methode zum Einlesen im Moment aus.

Fehlermeldung:

Code:
Exception in thread "main" java.lang.NullPointerException
	at logic.GeoToolsTest.loadShape(GeoToolsTest.java:40)
	at logic.GeoToolsTest.<init>(GeoToolsTest.java:23)
	at start.GeoToolsStarter.main(GeoToolsStarter.java:8)

Also findet er die Resource, kann auch ein
Code:
File
-Objekt daraus machen, aber der
Code:
landmaskstore
ist null. Mmmh.


[EDIT]Falls du das bei dir testen willst, die ganze Klasse sieht so aus:

Java:
package logic;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

import org.geotools.data.FeatureSource;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;

import com.vividsolutions.jts.geom.Coordinate;

public class GeoToolsTest {

    @SuppressWarnings("rawtypes")
    public GeoToolsTest() {
        Coordinate c1 = new Coordinate(50,   -12.3);
        Coordinate c2 = new Coordinate(48.2, -13  );
        System.out.println(c1);
        System.out.println(c2);

        FeatureSource featureSource = null;
        try {
            featureSource = loadShape();
        }
        catch (IOException | URISyntaxException e) {
            e.printStackTrace();
            System.exit(1);
        }

        System.out.println(c1);
        System.out.println(c2);
        System.out.println(featureSource);
    }

    @SuppressWarnings("rawtypes")
    private FeatureSource loadShape() throws IOException, URISyntaxException {
        URL url = GeoToolsTest.class.getResource("shape/world.shp");
        File landmask = new File(url.toURI());
        FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
        FeatureSource featureSource = landmaskstore.getFeatureSource();
        return featureSource;
    }

}

Den Inhalt deiner Zipdatei habe ich unter logic.shape in das Projekt eingefügt.[/EDIT]
 
Zuletzt bearbeitet:
Also habe mir das Zeug mal ausgeben lassen und debuggen lassen

System.out ergibt

landmaskstoreShapefile: datastore for :file:/Y:/..../world_landmask_shapefile/world.shp
featureSource: org.geotools.data.shapefile.ShapefileFeatureLocking@2767237

Der Debug zeigt mir auch inhalte an wobei "featureSource" -> "featureType" -> "types" bei "null" bleibt

Die HashMapEntrys zeigen mir die Attributtabelleeinträge "NAME" "AREA" etc aber keine Geometrischen "Beschreibungen"
 

Crian

Top Contributor
Ich komm an der Stelle leider einfach nicht weiter, solange
Code:
FileDataStoreFinder.getDataStore()
bei deinem Shape null zurück gibt, also wohl keinen passenden Store findet.
 
Java:
File landmask = new File("C:\\....Shapefile.....");
        if (landmask == null) {
            return;
        }
        FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
        FeatureSource featureSource = landmaskstore.getFeatureSource();

hast du es damit denn schon versucht ?
 

Crian

Top Contributor
Ja, das war die Basis für meinen Code. Ich hab mir url und file auch ausgeben lassen und auch ob file eine Datei ist. Das passt alles.
 
Du setzt oben auch
Java:
 FeatureSource featureSource = null;

vllt kann er deswegen keine FeatureSource dazufügen ... bin gerade selbst am rätseln

d.h. versuchen mit
Java:
        FeatureSource featureSource;
        try {
            featureSource = loadShape();
        }
        catch (IOException | URISyntaxException e) {
            e.printStackTrace();
            featureSource = null;
            System.exit(1);
 

Crian

Top Contributor
Im try-Block danach wird featureStore ja durch den Aufruf meiner Methode belegt. Und der Fehler tritt in der Methode
Code:
loadShape()
auf. Siehe Fehlermeldung. Die Methode sieht inzwischen so aus

[JAVA=37] @SuppressWarnings("rawtypes")
private FeatureSource loadShape() throws IOException, URISyntaxException {
URL url = GeoToolsTest.class.getResource("shape/world.shp");
System.out.println("url: " + url);
File landmask = new File(url.toURI());
System.out.println("File: " + landmask + " - " + (landmask.isFile()?"ja":"nein"));
FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
FeatureSource featureSource = landmaskstore.getFeatureSource();
return featureSource;
}[/code]

und das Ergebnis so:

Code:
(50.0, -12.3, NaN)
(48.2, -13.0, NaN)
url: file:/C:/Users/Anwender/Daten/java/workspace/GeoToolsTest/bin/logic/shape/world.shp
File: C:\Users\Anwender\Daten\java\workspace\GeoToolsTest\bin\logic\shape\world.shp - ja
Exception in thread "main" java.lang.NullPointerException
	at logic.GeoToolsTest.loadShape(GeoToolsTest.java:44)
	at logic.GeoToolsTest.<init>(GeoToolsTest.java:25)
	at start.GeoToolsStarter.main(GeoToolsStarter.java:8)
 
Ich weiß gerade echt nicht warum Du den Fehler bekommst und bei mir läufts wunderbar durch ...

Ich kann mir nur erklären das
Java:
        FeatureSource featureSource = null;
der ausschlaggebende Punkt ist. Da die FeatureSource mehrer Sachen speichert und du vllt somit den ersten "Platz" = "null" setzt -> Fehler

btw geb doch mal bitte
Java:
System.out.println(landmaskstore.getFeatureSource());
aus
 
Zuletzt bearbeitet:

Crian

Top Contributor
dann nochmal ganz platt:

Java:
package start;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

import logic.GeoToolsTest;

import org.geotools.data.FeatureSource;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;

public class GeoToolsTest2 {

    public static void main(String[] args) throws URISyntaxException, IOException {
        URL url = GeoToolsTest.class.getResource("shape/world.shp");
        System.out.println("url: " + url);
        File landmask = new File(url.toURI());
        System.out.println("File: " + landmask + " - " + (landmask.isFile()?"ja":"nein"));
        FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
        System.out.println("landmaskstore: " + landmaskstore);
        FeatureSource featureSource = landmaskstore.getFeatureSource();
        System.out.println("featureSource: " + featureSource);
    }

}

Ausgabe:

Code:
url: file:/C:/Users/Anwender/Daten/java/workspace/GeoToolsTest/bin/logic/shape/world.shp
File: C:\Users\Anwender\Daten\java\workspace\GeoToolsTest\bin\logic\shape\world.shp - ja
landmaskstore: null
Exception in thread "main" java.lang.NullPointerException
	at start.GeoToolsTest2.main(GeoToolsTest2.java:23)
 
Java:
package JavaForumTest;
 
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import org.geotools.data.FeatureSource;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
 
public class JavaForumTest{
 
    public static void main(String[] args) throws URISyntaxException, IOException {
       // URL url = JavaForumTest.class.getResource("shape/world.shp");
      //  System.out.println("url: " + url);
        File landmask = new File("Y:\\500 Temp\\world.shp");
        System.out.println("File: " + landmask + " - " + (landmask.isFile()?"ja":"nein"));
        FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
        System.out.println("landmaskstore: " + landmaskstore);
        FeatureSource featureSource = landmaskstore.getFeatureSource();
        System.out.println("featureSource: " + featureSource);
    }
 
}

macht keine Probleme.....
ich weiß nicht wo das Problem genau liegt aber ich denke mal bei
Java:
URL url = JavaForumTest.class.getResource("shape/world.shp");


Ich bin nur der Anfänger =)
 
Zuletzt bearbeitet:

Crian

Top Contributor
Java:
package start;

import java.io.File;
import java.io.IOException;

import org.geotools.data.FeatureSource;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;

public class GeoToolsTest3 {

    public static void main(String[] args) throws IOException {
        File landmask = new File("c:/temp/shape/world.shp");
        System.out.println("File: " + landmask + " - " + (landmask.isFile()?"ja":"nein"));
        FileDataStore landmaskstore = FileDataStoreFinder.getDataStore(landmask);
        System.out.println("landmaskstore: " + landmaskstore);
        FeatureSource featureSource = landmaskstore.getFeatureSource();
        System.out.println("featureSource: " + featureSource);
    }

}

Ausgabe

Code:
File: c:\temp\shape\world.shp - ja
landmaskstore: null
Exception in thread "main" java.lang.NullPointerException
	at start.GeoToolsTest3.main(GeoToolsTest3.java:17)

Hmmm! Vielleicht hab ich eine andere Version der Bibliotheken.
 
Natürlich. Ich habe auch schon versucht einfach die "Node"s der Kontinente aus der Shapefile auszulesen also alle Ecken. Diese in Point umzuwandeln und diese wieder in Coordinate...

Aber das verbinden dieser Coordinate ist dann wilkürlich weil es zu viele Ecke gibt um diese in eine gescheite Reihenfolge zu bringen..

Das komische ist nur wenn ich
Java:
       URL url = JavaForumTest.class.getResource("Y:\\Temp\\world.shp");
       System.out.println("url: " + url);
        File landmask = new File(url.toURI());

bekomm ich NullPointerException...

Wenn ich nur
Java:
File landmask = new File("Y:\\Temp\\world.shp");
funktioniert es einwandfrei....
 
Zuletzt bearbeitet:

Crian

Top Contributor
Natürlich. Ich habe auch schon versucht einfach die "Node"s der Kontinente aus der Shapefile auszulesen also alle Ecken. Diese in Point umzuwandeln und diese wieder in Coordinate...

Aber das verbinden dieser Coordinate ist dann wilkürlich weil es zu viele Ecke gibt um diese in eine gescheite Reihenfolge zu bringen..

Ja das glaub ich. Vielleicht könnten wir ein Rechteck und eine Linie hindurch erzeugen und damit testen? Falls du die Klassen dafür gut genug kennst.

Das komische ist nur wenn ich
Java:
       URL url = JavaForumTest.class.getResource("Y:\\Temp\\world.shp");
       System.out.println("url: " + url);
        File landmask = new File(url.toURI());

bekomm ich NullPointerException...

Wenn ich nur
Java:
File landmask = new File("Y:\\Temp\\world.shp");
funktioniert es einwandfrei....

Das liegt daran, dass
Code:
getResource()
eine Datei innerhalb des Verzeichnisbaums des Programms sucht. Ich hatte sie dorthin kopiert. Von außerhalb geft es nur über die andere Methode.
 
Bin es gerade am testen :) Aber iwie doch aufwendiger als ich dachte....

Java:
            Polygon p;
              p = new Polygon();

Funktioniert nur wenn ich

import java.awt.Polygon;

benutze... Brauche aber

import com.vividsolutions.jts.geom.Polygon;

Weiß gerade nicht genau wie ich es erstellen kann aber vllt steh ich auch nur gerade auf dem Schlauch, waren anstregende Stunden heute auf der Arbeit :)
 
Zuletzt bearbeitet:
Leider bin ich noch nicht recht weitergekommen, aber auch aus zeitmangel...

Ich werde vllt aber noch ein weitere Thread eröffnen um ein anderes Problem zu erläutern =)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit Spring Boot Dependency Injection Java Basics - Anfänger-Themen 12
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen


Oben