datafacer Geom { // Services divers service list[Coordinate] getCoordinates(); service list[list[Coordinate]] getMultiCoordinates(); service boolean isMultiGeom(); service boolean isPoint(); service boolean isLine(); service boolean isPolygon(); // 0=point,1=line,2=polygon,10=multipoint,11=multiline,12=multipolygon service int geomType(); // Services de tests geometriques service boolean contains(Geom g); service boolean coveredBy(Geom g); service boolean covers(Geom g); service boolean crosses(Geom g); service boolean disjoint(Geom g); service boolean equals(Geom g, real tolerance); service boolean intersects(Geom g); service boolean overlaps(Geom g); service boolean touches(Geom g); service boolean within(Geom g); // Service de mesures service real area(); service real distance(Geom g); service real length(); // Services de construction et calculs de nouvelles geometries service Geom createPoint(Coordinate c); service Geom createLine(list[Coordinate] lc); service Geom createPolygon(list[Coordinate] lc); service Geom createMultiPoint(list[Coordinate] lc); service Geom createMultiLine(list[list[Coordinate]] llc); service Geom createMultiPolygon(list[list[Coordinate]] llc); service Geom buffer(real distance); service Geom centroid(); service Geom convexHull(); service Geom difference(Geom g); service Geom intersection(Geom g); service Geom union(Geom g); } datafacer Coordinate { service real getX(); service real getY(); service real getZ(); service setX(real x); service setY(real y); service setZ(real z); service move(real dx, real dy, real dz); }