1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| import fr.ema.apo.AnimatedFrame;
import java.awt.Color;
import java.awt.Polygon;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import static java.lang.Integer.parseInt;
import static java.lang.Math.floor;
import static java.lang.Math.max;
import java.util.Scanner;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonNumber;
import javax.json.JsonObject;
import javax.json.JsonReader;
public class LireGeojson {
public static void lirefichier (String file, Polygon [] c){
try (InputStream fis = new FileInputStream(file)) {
// creation du jsonreader nommé fis
JsonReader jsonReader = Json.createReader(fis);
// lecture de l objet de base
JsonObject features = jsonReader.readObject();
// on recupere l'element feature dans le fichier de base il s agit d un tableau
JsonArray array = (JsonArray) features.get("features");
JsonObject toto1 = (JsonObject) array.get(0);
// mettre dans toto2 les elements de geometry
JsonObject toto2 = toto1.getJsonObject("geometry");
// mettre dans coords les element de coordinates et de geometry
JsonArray coords = toto2.getJsonArray("coordinates");
JsonArray coords1 = coords.getJsonArray(0).getJsonArray(0).getJsonArray(3);
// obtenir la premiere valeur du tableau
JsonNumber val = coords1.getJsonNumber(0);
//créer couleur blanc
int white = new Color(255, 255, 255).getRGB();
// cc est la taille du tableau de coordonnees, nombre de coordonnées
int cc = coords.size();
// on cree un tableau de taille cc vide
int [] size = new int [cc];
//Range les coordonnées de chaque polygon dans le tableau size de taille cc
for (int j = 0; j<cc;j++){
size[j] = coords.getJsonArray(j).getJsonArray(0).size();
}
//on extrait les premières coordonnées des points
int xmax = coords.getJsonArray(0).getJsonArray(0).getJsonArray(0).getJsonNumber(0).intValue();
int xmin = coords.getJsonArray(0).getJsonArray(0).getJsonArray(0).getJsonNumber(0).intValue();
int ymax = coords.getJsonArray(0).getJsonArray(0).getJsonArray(0).getJsonNumber(1).intValue();
int ymin = coords.getJsonArray(0).getJsonArray(0).getJsonArray(0).getJsonNumber(1).intValue();
for (int j=0;j<cc;j++){
for (int i = 0; i < size[j]; i++) {
//Utilisation des méthodes getJasonArray pour récupérer le premier caractère
JsonArray coords2 = coords.getJsonArray(j).getJsonArray(0).getJsonArray(i);
//Le caractère "0" correspond à la coordonné "x" et le caractère "1" correspond à la coordonnée "y"
// on initialise x et y
int x = coords2.getJsonNumber(0).intValue();
int y = coords2.getJsonNumber(1).intValue();
// on chercher le xmax xmin ymax ymin
if (x > xmax) {
xmax = x;
}
if (x < xmin) {
xmin = x;
}
if (y > ymax) {
ymax = y;
}
if (y < ymin) {
ymin = y;
}
}
}
System.out.println(xmin);
System.out.println(xmax);
System.out.println(ymin);
System.out.println(ymax);
for (int j=0;j<cc;j++){
Polygon ip = new Polygon();
// size est le tableau vide
for (int i = 0; i < size[j]; i++) {
JsonArray coords3 = coords.getJsonArray(j).getJsonArray(0).getJsonArray(i);
//Le caractère "0" correspond à la coordonné "x" et le caractère "1" correspond à la coordonnée "y"
int x5 = coords3.getJsonNumber(0).intValue();
int y5 = coords3.getJsonNumber(1).intValue();
//On réduit les coordonnées à la taille de l'image
int x2 = (int) floor((x5-xmin)*200/(xmax-xmin));
int y2 = (int) floor((y5-ymin)*200/(xmax-xmin));
ip.addPoint(x2, 200-(y2));
}
c[j]=ip;
}
}
catch (IOException ex) {
System.out.println("erreur");
}
}
} |
Partager