├── .gitignore ├── LICENSE ├── README.md ├── geoapi-conformance ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── module-info.java │ │ └── org │ │ │ └── opengis │ │ │ └── test │ │ │ ├── Assertions.java │ │ │ ├── CalculationType.java │ │ │ ├── ComputationFailure.java │ │ │ ├── Configuration.java │ │ │ ├── TestCase.java │ │ │ ├── ToleranceModifier.java │ │ │ ├── ToleranceModifiers.java │ │ │ ├── Units.java │ │ │ ├── Validator.java │ │ │ ├── ValidatorContainer.java │ │ │ ├── Validators.java │ │ │ ├── WarningMessage.java │ │ │ ├── coverage │ │ │ └── image │ │ │ │ ├── ImageBackendTestCase.java │ │ │ │ ├── ImageIOTestCase.java │ │ │ │ ├── ImageReaderTestCase.java │ │ │ │ ├── ImageValidator.java │ │ │ │ ├── ImageWriterTestCase.java │ │ │ │ ├── PixelIterator.java │ │ │ │ ├── PixelIteratorForIO.java │ │ │ │ ├── RasterImage.java │ │ │ │ └── package-info.java │ │ │ ├── dataset │ │ │ ├── ContentVerifier.java │ │ │ ├── TestData.java │ │ │ └── package-info.java │ │ │ ├── geometry │ │ │ ├── GeometryValidator.java │ │ │ └── package-info.java │ │ │ ├── metadata │ │ │ ├── CitationValidator.java │ │ │ ├── ExtentValidator.java │ │ │ ├── MaintenanceValidator.java │ │ │ ├── MetadataBaseValidator.java │ │ │ ├── MetadataValidator.java │ │ │ ├── QualityValidator.java │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── referencing │ │ │ ├── AffineTransformTest.java │ │ │ ├── AuthorityFactoryTest.java │ │ │ ├── CRSValidator.java │ │ │ ├── CSValidator.java │ │ │ ├── DatumValidator.java │ │ │ ├── DerivativeFailure.java │ │ │ ├── EPSGIdentifier.java │ │ │ ├── ObjectFactoryTest.java │ │ │ ├── OperationValidator.java │ │ │ ├── ParameterValidator.java │ │ │ ├── ParameterizedTransformTest.java │ │ │ ├── PseudoEpsgFactory.java │ │ │ ├── ReferencingTestCase.java │ │ │ ├── ReferencingValidator.java │ │ │ ├── RegisterOperationsMock.java │ │ │ ├── SamplePoints.java │ │ │ ├── SimpleDirectPosition.java │ │ │ ├── SimpleMatrix.java │ │ │ ├── TransformFailure.java │ │ │ ├── TransformTestCase.java │ │ │ ├── Utilities.java │ │ │ ├── WKTParserTest.java │ │ │ └── package-info.java │ │ │ ├── report │ │ │ ├── AuthorityCodesReport.java │ │ │ ├── IdentifiedObjects.java │ │ │ ├── OperationParametersReport.java │ │ │ ├── Report.java │ │ │ └── package-info.java │ │ │ └── util │ │ │ ├── CodeListValidator.java │ │ │ ├── NameTest.java │ │ │ ├── NameValidator.java │ │ │ ├── PseudoFactory.java │ │ │ ├── SimpleCitation.java │ │ │ ├── SimpleInternationalString.java │ │ │ └── package-info.java │ └── resources │ │ └── org │ │ └── opengis │ │ └── test │ │ ├── dataset │ │ ├── Cube2D_geographic_packed.nc │ │ ├── Cube4D_projected_float.nc │ │ ├── MovingFeatures.nc │ │ └── README.md │ │ ├── report │ │ ├── AuthorityCodes.html │ │ ├── OperationParameters.html │ │ ├── geoapi-reports.css │ │ └── index.html │ │ └── runner │ │ ├── documentinfo.png │ │ ├── mydocuments.png │ │ └── start.png │ └── test │ ├── java │ └── org │ │ └── opengis │ │ └── test │ │ ├── AssertionsTest.java │ │ ├── ConfigurationTest.java │ │ ├── ToleranceModifiersTest.java │ │ ├── UnitsTest.java │ │ ├── ValidatorContainerTest.java │ │ ├── ValidatorTest.java │ │ ├── coverage │ │ └── image │ │ │ ├── ImageBackendCaseTest.java │ │ │ ├── ImageReaderCaseTest.java │ │ │ └── ImageWriterCaseTest.java │ │ ├── dataset │ │ └── TestDataTest.java │ │ ├── metadata │ │ ├── CitationValidatorTest.java │ │ └── SimpleCitationDate.java │ │ ├── referencing │ │ ├── AffineTransform2D.java │ │ ├── BogusAffineTransform2D.java │ │ ├── TransformCaseTest.java │ │ └── ValidatorTest.java │ │ ├── report │ │ └── IdentifiedObjectsTest.java │ │ └── util │ │ └── ValidatorTest.java │ └── resources │ └── org │ └── opengis │ └── test │ └── coverage │ └── image │ ├── PointLoma.png │ └── README.md ├── geoapi-examples ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── module-info.java │ │ └── org │ │ │ └── opengis │ │ │ └── example │ │ │ ├── SimpleFactories.java │ │ │ ├── coverage │ │ │ ├── SimpleGridCoordinates.java │ │ │ ├── SimpleGridEnvelope.java │ │ │ └── package-info.java │ │ │ ├── geometry │ │ │ ├── SimpleDirectPosition.java │ │ │ ├── SimpleEnvelope.java │ │ │ └── package-info.java │ │ │ ├── metadata │ │ │ ├── MetadataHandler.java │ │ │ ├── MetadataProxyFactory.java │ │ │ ├── SimpleCitation.java │ │ │ ├── SimpleGeographicBoundingBox.java │ │ │ ├── SimpleIdentifier.java │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── parameter │ │ │ ├── SimpleParameter.java │ │ │ ├── SimpleParameterGroup.java │ │ │ └── package-info.java │ │ │ ├── referencing │ │ │ ├── AffineTransform2D.java │ │ │ ├── ProjectiveTransform.java │ │ │ ├── SimpleAuthorityFactory.java │ │ │ ├── SimpleAxis.java │ │ │ ├── SimpleCRS.java │ │ │ ├── SimpleDatum.java │ │ │ ├── SimpleIdentifiedObject.java │ │ │ ├── SimpleMatrix.java │ │ │ ├── SimpleTransform.java │ │ │ ├── SimpleTransform2D.java │ │ │ ├── SimpleTransformFactory.java │ │ │ ├── TransformedCoordinateSet.java │ │ │ └── package-info.java │ │ │ └── util │ │ │ ├── SimpleName.java │ │ │ ├── SimpleNameFactory.java │ │ │ ├── SimpleNameSpace.java │ │ │ └── package-info.java │ └── javadoc │ │ └── overview.html │ └── test │ └── java │ └── org │ └── opengis │ └── example │ ├── geometry │ ├── SimpleDirectPositionTest.java │ └── SimpleEnvelopeTest.java │ ├── metadata │ └── MetadataProxyFactoryTest.java │ ├── parameter │ ├── SimpleParameterGroupTest.java │ └── SimpleParameterTest.java │ ├── referencing │ ├── AffineTransform2DTest.java │ ├── ProjectiveTransformTest.java │ ├── SimpleAuthorityFactoryTest.java │ ├── SimpleTest.java │ └── SimpleTransform2DTest.java │ └── util │ └── SimpleNameTest.java ├── geoapi-java-python ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── opengis │ │ │ └── bridge │ │ │ └── python │ │ │ ├── CharSequences.java │ │ │ ├── Converter.java │ │ │ ├── Environment.java │ │ │ ├── EnvironmentException.java │ │ │ ├── Interfacing.java │ │ │ ├── Literal.java │ │ │ ├── PythonHelper.java │ │ │ ├── Sequence.java │ │ │ ├── Singleton.java │ │ │ ├── UnconvertibleTypeException.java │ │ │ └── package-info.java │ ├── java9 │ │ └── module-info.txt │ ├── python │ │ └── opengis │ │ │ └── bridge │ │ │ ├── __init__.py │ │ │ └── java │ │ │ ├── __init__.py │ │ │ ├── metadata.py │ │ │ └── referencing.py │ └── resources │ │ └── org │ │ └── opengis │ │ └── bridge │ │ └── python │ │ └── subclassed.txt │ └── test │ ├── java │ └── org │ │ └── opengis │ │ └── bridge │ │ └── python │ │ └── InterfacingTest.java │ └── python │ └── test_referencing.py ├── geoapi-pending ├── pom.xml └── src │ └── main │ └── java │ ├── module-info.java │ └── org │ └── opengis │ ├── annotation │ ├── XmlElement.java │ └── XmlParameter.java │ ├── coverage │ ├── AttributeValues.java │ ├── CannotEvaluateException.java │ ├── CommonPointRule.java │ ├── ContinuousCoverage.java │ ├── Coverage.java │ ├── CurveValuePair.java │ ├── DiscreteCoverage.java │ ├── DiscreteCurveCoverage.java │ ├── DiscreteGridPointCoverage.java │ ├── DiscretePointCoverage.java │ ├── DiscreteSolidCoverage.java │ ├── DiscreteSurfaceCoverage.java │ ├── DomainObject.java │ ├── GeometryValuePair.java │ ├── InterpolationMethod.java │ ├── PointOutsideCoverageException.java │ ├── PointValuePair.java │ ├── SegmentedCurveCoverage.java │ ├── SolidValuePair.java │ ├── SurfaceValuePair.java │ ├── ThiessenPolygonCoverage.java │ ├── ThiessenValuePolygon.java │ ├── TinCoverage.java │ ├── ValueCurve.java │ ├── ValueObject.java │ ├── ValueSegment.java │ ├── ValueTriangle.java │ ├── grid │ │ ├── ContinuousQuadrilateralGridCoverage.java │ │ ├── FootPrint.java │ │ ├── Grid.java │ │ ├── GridCell.java │ │ ├── GridCoordinates.java │ │ ├── GridEnvelope.java │ │ ├── GridPoint.java │ │ ├── GridPointValuePair.java │ │ ├── GridValueCell.java │ │ ├── GridValuesMatrix.java │ │ ├── HexagonalGridCoverage.java │ │ ├── RectifiedGrid.java │ │ ├── ReferenceableGrid.java │ │ ├── SequenceRule.java │ │ ├── SequenceType.java │ │ ├── ValueHexagon.java │ │ ├── doc-files │ │ │ ├── BoustrophedonicScanning.png │ │ │ ├── CantorDiagonalScanning.png │ │ │ ├── Hilbert.png │ │ │ ├── LinearScanning.png │ │ │ ├── Morton.png │ │ │ └── SpiralScanning.png │ │ └── package-info.java │ └── package-info.java │ ├── filter │ ├── AdhocQueryExpression.java │ └── capability │ │ └── GeometryOperand.java │ ├── geometry │ ├── Boundary.java │ ├── Geometry.java │ ├── PositionFactory.java │ ├── TransfiniteSet.java │ ├── aggregate │ │ ├── Aggregate.java │ │ ├── AggregateFactory.java │ │ ├── MultiCurve.java │ │ ├── MultiPoint.java │ │ ├── MultiPrimitive.java │ │ ├── MultiSurface.java │ │ └── package.html │ ├── complex │ │ ├── Complex.java │ │ ├── ComplexBoundary.java │ │ ├── ComplexFactory.java │ │ ├── Composite.java │ │ ├── CompositeCurve.java │ │ ├── CompositePoint.java │ │ ├── CompositeSolid.java │ │ ├── CompositeSurface.java │ │ └── package.html │ ├── coordinate │ │ ├── AffinePlacement.java │ │ ├── Arc.java │ │ ├── ArcByBulge.java │ │ ├── ArcString.java │ │ ├── ArcStringByBulge.java │ │ ├── BSplineCurve.java │ │ ├── BSplineSurface.java │ │ ├── BSplineSurfaceForm.java │ │ ├── Bezier.java │ │ ├── BicubicGrid.java │ │ ├── BilinearGrid.java │ │ ├── Circle.java │ │ ├── Clothoid.java │ │ ├── Cone.java │ │ ├── Conic.java │ │ ├── CubicSpline.java │ │ ├── Cylinder.java │ │ ├── GenericCurve.java │ │ ├── GenericSurface.java │ │ ├── Geodesic.java │ │ ├── GeodesicString.java │ │ ├── GriddedSurface.java │ │ ├── Knot.java │ │ ├── KnotType.java │ │ ├── LineSegment.java │ │ ├── LineString.java │ │ ├── OffsetCurve.java │ │ ├── ParamForPoint.java │ │ ├── ParametricCurveSurface.java │ │ ├── Placement.java │ │ ├── PointArray.java │ │ ├── PointGrid.java │ │ ├── Polygon.java │ │ ├── PolyhedralSurface.java │ │ ├── PolynomialSpline.java │ │ ├── Sphere.java │ │ ├── SplineCurve.java │ │ ├── SplineCurveForm.java │ │ ├── Tin.java │ │ ├── Triangle.java │ │ ├── TriangulatedSurface.java │ │ └── doc-files │ │ │ ├── AffinePlacement.png │ │ │ └── ConicCurve.png │ └── primitive │ │ ├── Bearing.java │ │ ├── Curve.java │ │ ├── CurveBoundary.java │ │ ├── CurveInterpolation.java │ │ ├── CurveSegment.java │ │ ├── OrientableCurve.java │ │ ├── OrientablePrimitive.java │ │ ├── OrientableSurface.java │ │ ├── Point.java │ │ ├── Primitive.java │ │ ├── PrimitiveBoundary.java │ │ ├── Ring.java │ │ ├── Shell.java │ │ ├── Solid.java │ │ ├── SolidBoundary.java │ │ ├── Surface.java │ │ ├── SurfaceBoundary.java │ │ ├── SurfaceInterpolation.java │ │ ├── SurfacePatch.java │ │ └── package.html │ ├── observation │ ├── AnyFeature.java │ ├── BaseUnit.java │ ├── CompositePhenomenon.java │ ├── CompoundPhenomenon.java │ ├── ConstrainedPhenomenon.java │ ├── DiscreteCoverageObservation.java │ ├── Measure.java │ ├── Measurement.java │ ├── Observation.java │ ├── ObservationCollection.java │ ├── Phenomenon.java │ ├── PhenomenonSeries.java │ ├── Process.java │ ├── ProcessModel.java │ ├── ProcessSystem.java │ ├── TimeSeriesObservation.java │ ├── coverage │ │ ├── DiscreteTimeInstantCoverage.java │ │ └── TimeInstantValuePair.java │ └── sampling │ │ ├── LocatedSpecimen.java │ │ ├── Location.java │ │ ├── SamplingCurve.java │ │ ├── SamplingFeature.java │ │ ├── SamplingFeatureCollection.java │ │ ├── SamplingFeatureRelation.java │ │ ├── SamplingPoint.java │ │ ├── SamplingSolid.java │ │ ├── SamplingSurface.java │ │ ├── SpatiallyExtensiveSamplingFeature.java │ │ ├── Specimen.java │ │ └── SurveyProcedure.java │ ├── referencing │ └── gazetteer │ │ ├── Gazetteer.java │ │ ├── Location.java │ │ ├── LocationType.java │ │ ├── ReferenceSystemUsingIdentifiers.java │ │ └── package-info.java │ └── style │ ├── AnchorPoint.java │ ├── ChannelSelection.java │ ├── ColorMap.java │ ├── ColorReplacement.java │ ├── ContrastEnhancement.java │ ├── ContrastMethod.java │ ├── Description.java │ ├── Displacement.java │ ├── ExtensionSymbolizer.java │ ├── ExternalGraphic.java │ ├── ExternalMark.java │ ├── FeatureTypeStyle.java │ ├── Fill.java │ ├── Font.java │ ├── Graphic.java │ ├── GraphicFill.java │ ├── GraphicLegend.java │ ├── GraphicStroke.java │ ├── GraphicalSymbol.java │ ├── Halo.java │ ├── LabelPlacement.java │ ├── LinePlacement.java │ ├── LineSymbolizer.java │ ├── Mark.java │ ├── OverlapBehavior.java │ ├── PointPlacement.java │ ├── PointSymbolizer.java │ ├── PolygonSymbolizer.java │ ├── RasterSymbolizer.java │ ├── Rule.java │ ├── SelectedChannelType.java │ ├── SemanticType.java │ ├── ShadedRelief.java │ ├── Stroke.java │ ├── Style.java │ ├── StyleFactory.java │ ├── StyleVisitor.java │ ├── Symbolizer.java │ ├── TextSymbolizer.java │ ├── doc-files │ ├── rules.jpg │ └── symbolizers.jpg │ ├── package-info.java │ └── portrayal │ ├── AttributeDefinition.java │ ├── AttributeValue.java │ ├── ExternalFunction.java │ ├── ParameterSet.java │ ├── PortrayalOperation.java │ └── PortrayalService.java ├── geoapi ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── opengis │ │ │ ├── annotation │ │ │ ├── Classifier.java │ │ │ ├── Obligation.java │ │ │ ├── ResourceBundles.java │ │ │ ├── Specification.java │ │ │ ├── Stereotype.java │ │ │ ├── UML.java │ │ │ └── package-info.java │ │ │ ├── coordinate │ │ │ ├── BufferToPoint.java │ │ │ ├── CoordinateMetadata.java │ │ │ ├── CoordinateSet.java │ │ │ ├── MismatchedCoordinateMetadataException.java │ │ │ ├── MismatchedDimensionException.java │ │ │ └── package-info.java │ │ │ ├── feature │ │ │ ├── Attribute.java │ │ │ ├── AttributeType.java │ │ │ ├── DynamicAttribute.java │ │ │ ├── DynamicAttributeType.java │ │ │ ├── Feature.java │ │ │ ├── FeatureAssociation.java │ │ │ ├── FeatureAssociationRole.java │ │ │ ├── FeatureInstantiationException.java │ │ │ ├── FeatureOperationException.java │ │ │ ├── FeatureType.java │ │ │ ├── IdentifiedType.java │ │ │ ├── InvalidPropertyValueException.java │ │ │ ├── MismatchedFeatureException.java │ │ │ ├── MultiValuedPropertyException.java │ │ │ ├── Operation.java │ │ │ ├── OutOfTemporalDomainException.java │ │ │ ├── Property.java │ │ │ ├── PropertyNotFoundException.java │ │ │ ├── PropertyType.java │ │ │ └── package-info.java │ │ │ ├── filter │ │ │ ├── BetweenComparisonOperator.java │ │ │ ├── BinaryComparisonOperator.java │ │ │ ├── BinarySpatialOperator.java │ │ │ ├── ComparisonOperator.java │ │ │ ├── ComparisonOperatorName.java │ │ │ ├── DistanceOperator.java │ │ │ ├── DistanceOperatorName.java │ │ │ ├── DuplicateSortKeyException.java │ │ │ ├── Expression.java │ │ │ ├── Filter.java │ │ │ ├── FilterExpressions.java │ │ │ ├── FilterFactory.java │ │ │ ├── FilterLiteral.java │ │ │ ├── FilterName.java │ │ │ ├── InvalidFilterValueException.java │ │ │ ├── LikeOperator.java │ │ │ ├── Literal.java │ │ │ ├── LogicalOperator.java │ │ │ ├── LogicalOperatorName.java │ │ │ ├── MatchAction.java │ │ │ ├── Name.java │ │ │ ├── NilOperator.java │ │ │ ├── NullOperator.java │ │ │ ├── QueryExpression.java │ │ │ ├── ResourceId.java │ │ │ ├── SortBy.java │ │ │ ├── SortOrder.java │ │ │ ├── SortProperty.java │ │ │ ├── SpatialOperator.java │ │ │ ├── SpatialOperatorName.java │ │ │ ├── TemporalOperator.java │ │ │ ├── TemporalOperatorName.java │ │ │ ├── ValueReference.java │ │ │ ├── Version.java │ │ │ ├── VersionAction.java │ │ │ ├── capability │ │ │ │ ├── AvailableFunction.java │ │ │ │ ├── Conformance.java │ │ │ │ ├── ExtendedCapabilities.java │ │ │ │ ├── FilterCapabilities.java │ │ │ │ ├── IdCapabilities.java │ │ │ │ ├── ScalarCapabilities.java │ │ │ │ ├── SpatialCapabilities.java │ │ │ │ ├── TemporalCapabilities.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ │ ├── geoapi │ │ │ └── internal │ │ │ │ ├── Errors.java │ │ │ │ ├── Legacy.java │ │ │ │ ├── Produces.java │ │ │ │ ├── Vocabulary.java │ │ │ │ └── package-info.java │ │ │ ├── geometry │ │ │ ├── DirectPosition.java │ │ │ ├── Envelope.java │ │ │ └── package-info.java │ │ │ ├── metadata │ │ │ ├── ApplicationSchemaInformation.java │ │ │ ├── Datatype.java │ │ │ ├── ExtendedElementInformation.java │ │ │ ├── Identifier.java │ │ │ ├── Metadata.java │ │ │ ├── MetadataExtensionInformation.java │ │ │ ├── MetadataScope.java │ │ │ ├── PortrayalCatalogueReference.java │ │ │ ├── acquisition │ │ │ │ ├── AcquisitionInformation.java │ │ │ │ ├── Context.java │ │ │ │ ├── EnvironmentalRecord.java │ │ │ │ ├── Event.java │ │ │ │ ├── GeometryType.java │ │ │ │ ├── Instrument.java │ │ │ │ ├── Objective.java │ │ │ │ ├── ObjectiveType.java │ │ │ │ ├── Operation.java │ │ │ │ ├── OperationType.java │ │ │ │ ├── Plan.java │ │ │ │ ├── Platform.java │ │ │ │ ├── PlatformPass.java │ │ │ │ ├── Priority.java │ │ │ │ ├── RequestedDate.java │ │ │ │ ├── Requirement.java │ │ │ │ ├── Sequence.java │ │ │ │ ├── Trigger.java │ │ │ │ └── package-info.java │ │ │ ├── citation │ │ │ │ ├── Address.java │ │ │ │ ├── Citation.java │ │ │ │ ├── CitationDate.java │ │ │ │ ├── Contact.java │ │ │ │ ├── DateType.java │ │ │ │ ├── Individual.java │ │ │ │ ├── OnLineFunction.java │ │ │ │ ├── OnlineResource.java │ │ │ │ ├── Organisation.java │ │ │ │ ├── Party.java │ │ │ │ ├── PresentationForm.java │ │ │ │ ├── Responsibility.java │ │ │ │ ├── ResponsibleParty.java │ │ │ │ ├── Role.java │ │ │ │ ├── Series.java │ │ │ │ ├── Telephone.java │ │ │ │ ├── TelephoneType.java │ │ │ │ └── package-info.java │ │ │ ├── constraint │ │ │ │ ├── Classification.java │ │ │ │ ├── Constraints.java │ │ │ │ ├── LegalConstraints.java │ │ │ │ ├── Releasability.java │ │ │ │ ├── Restriction.java │ │ │ │ ├── SecurityConstraints.java │ │ │ │ └── package-info.java │ │ │ ├── content │ │ │ │ ├── AttributeGroup.java │ │ │ │ ├── Band.java │ │ │ │ ├── BandDefinition.java │ │ │ │ ├── ContentInformation.java │ │ │ │ ├── CoverageContentType.java │ │ │ │ ├── CoverageDescription.java │ │ │ │ ├── FeatureCatalogueDescription.java │ │ │ │ ├── FeatureTypeInfo.java │ │ │ │ ├── ImageDescription.java │ │ │ │ ├── ImagingCondition.java │ │ │ │ ├── PolarisationOrientation.java │ │ │ │ ├── RangeDimension.java │ │ │ │ ├── RangeElementDescription.java │ │ │ │ ├── SampleDimension.java │ │ │ │ ├── TransferFunctionType.java │ │ │ │ └── package-info.java │ │ │ ├── distribution │ │ │ │ ├── DataFile.java │ │ │ │ ├── DigitalTransferOptions.java │ │ │ │ ├── Distribution.java │ │ │ │ ├── Distributor.java │ │ │ │ ├── Format.java │ │ │ │ ├── Medium.java │ │ │ │ ├── MediumFormat.java │ │ │ │ ├── StandardOrderProcess.java │ │ │ │ └── package-info.java │ │ │ ├── extent │ │ │ │ ├── BoundingPolygon.java │ │ │ │ ├── Extent.java │ │ │ │ ├── GeographicBoundingBox.java │ │ │ │ ├── GeographicDescription.java │ │ │ │ ├── GeographicExtent.java │ │ │ │ ├── SpatialTemporalExtent.java │ │ │ │ ├── TemporalExtent.java │ │ │ │ ├── VerticalExtent.java │ │ │ │ └── package-info.java │ │ │ ├── identification │ │ │ │ ├── AggregateInformation.java │ │ │ │ ├── AssociatedResource.java │ │ │ │ ├── AssociationType.java │ │ │ │ ├── BrowseGraphic.java │ │ │ │ ├── CharacterSet.java │ │ │ │ ├── CoupledResource.java │ │ │ │ ├── CouplingType.java │ │ │ │ ├── DataIdentification.java │ │ │ │ ├── DistributedComputingPlatform.java │ │ │ │ ├── Identification.java │ │ │ │ ├── InitiativeType.java │ │ │ │ ├── KeywordClass.java │ │ │ │ ├── KeywordType.java │ │ │ │ ├── Keywords.java │ │ │ │ ├── OperationChainMetadata.java │ │ │ │ ├── OperationMetadata.java │ │ │ │ ├── Parameter.html │ │ │ │ ├── Progress.java │ │ │ │ ├── RepresentativeFraction.java │ │ │ │ ├── Resolution.java │ │ │ │ ├── ServiceIdentification.java │ │ │ │ ├── TopicCategory.java │ │ │ │ ├── Usage.java │ │ │ │ └── package-info.java │ │ │ ├── lineage │ │ │ │ ├── Algorithm.java │ │ │ │ ├── Lineage.java │ │ │ │ ├── NominalResolution.java │ │ │ │ ├── ProcessStep.java │ │ │ │ ├── ProcessStepReport.java │ │ │ │ ├── Processing.java │ │ │ │ ├── Source.java │ │ │ │ └── package-info.java │ │ │ ├── maintenance │ │ │ │ ├── MaintenanceFrequency.java │ │ │ │ ├── MaintenanceInformation.java │ │ │ │ ├── Scope.java │ │ │ │ ├── ScopeCode.java │ │ │ │ ├── ScopeDescription.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── quality │ │ │ │ ├── AbsoluteExternalPositionalAccuracy.java │ │ │ │ ├── AccuracyOfATimeMeasurement.java │ │ │ │ ├── AggregationDerivation.java │ │ │ │ ├── BasicMeasure.java │ │ │ │ ├── Completeness.java │ │ │ │ ├── CompletenessCommission.java │ │ │ │ ├── CompletenessOmission.java │ │ │ │ ├── ConceptualConsistency.java │ │ │ │ ├── Confidence.java │ │ │ │ ├── ConformanceResult.java │ │ │ │ ├── CoverageResult.java │ │ │ │ ├── DataEvaluation.java │ │ │ │ ├── DataQuality.java │ │ │ │ ├── Description.java │ │ │ │ ├── DescriptiveResult.java │ │ │ │ ├── DomainConsistency.java │ │ │ │ ├── Element.java │ │ │ │ ├── EvaluationMethod.java │ │ │ │ ├── EvaluationMethodType.java │ │ │ │ ├── FormatConsistency.java │ │ │ │ ├── FullInspection.java │ │ │ │ ├── GriddedDataPositionalAccuracy.java │ │ │ │ ├── Homogeneity.java │ │ │ │ ├── IndirectEvaluation.java │ │ │ │ ├── LogicalConsistency.java │ │ │ │ ├── Measure.java │ │ │ │ ├── MeasureInstanceReference.java │ │ │ │ ├── MeasureReference.java │ │ │ │ ├── Metaquality.java │ │ │ │ ├── NonQuantitativeAttributeAccuracy.java │ │ │ │ ├── NonQuantitativeAttributeCorrectness.java │ │ │ │ ├── Parameter.html │ │ │ │ ├── PositionalAccuracy.java │ │ │ │ ├── QuantitativeAttributeAccuracy.java │ │ │ │ ├── QuantitativeResult.java │ │ │ │ ├── RelativeInternalPositionalAccuracy.java │ │ │ │ ├── Representativity.java │ │ │ │ ├── Result.java │ │ │ │ ├── SampleBasedInspection.java │ │ │ │ ├── Scope.java │ │ │ │ ├── SourceReference.java │ │ │ │ ├── StandaloneQualityReportInformation.java │ │ │ │ ├── TemporalAccuracy.java │ │ │ │ ├── TemporalConsistency.java │ │ │ │ ├── TemporalQuality.java │ │ │ │ ├── TemporalValidity.java │ │ │ │ ├── ThematicAccuracy.java │ │ │ │ ├── ThematicClassificationCorrectness.java │ │ │ │ ├── TopologicalConsistency.java │ │ │ │ ├── Usability.java │ │ │ │ ├── ValueStructure.java │ │ │ │ └── package-info.java │ │ │ └── spatial │ │ │ │ ├── CellGeometry.java │ │ │ │ ├── Dimension.java │ │ │ │ ├── DimensionNameType.java │ │ │ │ ├── GCP.java │ │ │ │ ├── GCPCollection.java │ │ │ │ ├── GeolocationInformation.java │ │ │ │ ├── GeometricObjectType.java │ │ │ │ ├── GeometricObjects.java │ │ │ │ ├── Georectified.java │ │ │ │ ├── Georeferenceable.java │ │ │ │ ├── GridSpatialRepresentation.java │ │ │ │ ├── PixelOrientation.java │ │ │ │ ├── SpatialRepresentation.java │ │ │ │ ├── SpatialRepresentationType.java │ │ │ │ ├── TopologyLevel.java │ │ │ │ ├── VectorSpatialRepresentation.java │ │ │ │ └── package-info.java │ │ │ ├── parameter │ │ │ ├── GeneralParameterDescriptor.java │ │ │ ├── GeneralParameterValue.java │ │ │ ├── InvalidParameterCardinalityException.java │ │ │ ├── InvalidParameterNameException.java │ │ │ ├── InvalidParameterTypeException.java │ │ │ ├── InvalidParameterValueException.java │ │ │ ├── ParameterDescriptor.java │ │ │ ├── ParameterDescriptorGroup.java │ │ │ ├── ParameterDirection.java │ │ │ ├── ParameterNotFoundException.java │ │ │ ├── ParameterValue.java │ │ │ ├── ParameterValueGroup.java │ │ │ └── package-info.java │ │ │ ├── referencing │ │ │ ├── AuthorityFactory.java │ │ │ ├── IdentifiedObject.java │ │ │ ├── NoSuchAuthorityCodeException.java │ │ │ ├── ObjectDomain.java │ │ │ ├── ObjectFactory.java │ │ │ ├── ReferenceSystem.java │ │ │ ├── ReferenceSystemType.java │ │ │ ├── RegisterOperations.java │ │ │ ├── crs │ │ │ │ ├── CRSAuthorityFactory.java │ │ │ │ ├── CRSFactory.java │ │ │ │ ├── CompoundCRS.java │ │ │ │ ├── CompoundCS.java │ │ │ │ ├── CoordinateReferenceSystem.java │ │ │ │ ├── DerivedCRS.java │ │ │ │ ├── EngineeringCRS.java │ │ │ │ ├── GeodeticCRS.java │ │ │ │ ├── GeographicCRS.java │ │ │ │ ├── ParametricCRS.java │ │ │ │ ├── ProjectedCRS.java │ │ │ │ ├── SingleCRS.java │ │ │ │ ├── TemporalCRS.java │ │ │ │ ├── VerticalCRS.java │ │ │ │ └── package-info.java │ │ │ ├── cs │ │ │ │ ├── AffineCS.java │ │ │ │ ├── AxisDirection.java │ │ │ │ ├── CSAuthorityFactory.java │ │ │ │ ├── CSFactory.java │ │ │ │ ├── CartesianCS.java │ │ │ │ ├── CoordinateDataType.java │ │ │ │ ├── CoordinateSystem.java │ │ │ │ ├── CoordinateSystemAxis.java │ │ │ │ ├── CylindricalCS.java │ │ │ │ ├── EllipsoidalCS.java │ │ │ │ ├── LinearCS.java │ │ │ │ ├── ParametricCS.java │ │ │ │ ├── PolarCS.java │ │ │ │ ├── RangeMeaning.java │ │ │ │ ├── SphericalCS.java │ │ │ │ ├── TimeCS.java │ │ │ │ ├── TimeUnit.java │ │ │ │ ├── VerticalCS.java │ │ │ │ └── package-info.java │ │ │ ├── datum │ │ │ │ ├── Datum.java │ │ │ │ ├── DatumAuthorityFactory.java │ │ │ │ ├── DatumEnsemble.java │ │ │ │ ├── DatumFactory.java │ │ │ │ ├── DynamicReferenceFrame.java │ │ │ │ ├── Ellipsoid.java │ │ │ │ ├── EngineeringDatum.java │ │ │ │ ├── GeodeticDatum.java │ │ │ │ ├── ParametricDatum.java │ │ │ │ ├── PrimeMeridian.java │ │ │ │ ├── RealizationMethod.java │ │ │ │ ├── TemporalDatum.java │ │ │ │ ├── VerticalDatum.java │ │ │ │ └── package-info.java │ │ │ ├── operation │ │ │ │ ├── ConcatenatedOperation.java │ │ │ │ ├── Conversion.java │ │ │ │ ├── CoordinateOperation.java │ │ │ │ ├── CoordinateOperationAuthorityFactory.java │ │ │ │ ├── CoordinateOperationFactory.java │ │ │ │ ├── Formula.java │ │ │ │ ├── MathTransform.java │ │ │ │ ├── MathTransform1D.java │ │ │ │ ├── MathTransform2D.java │ │ │ │ ├── MathTransformFactory.java │ │ │ │ ├── Matrix.java │ │ │ │ ├── NoninvertibleTransformException.java │ │ │ │ ├── OperationMethod.java │ │ │ │ ├── OperationNotFoundException.java │ │ │ │ ├── PassThroughOperation.java │ │ │ │ ├── PointMotionOperation.java │ │ │ │ ├── SingleOperation.java │ │ │ │ ├── TransformException.java │ │ │ │ ├── Transformation.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ │ ├── temporal │ │ │ ├── IndeterminatePositionException.java │ │ │ ├── IndeterminateValue.java │ │ │ ├── Instant.java │ │ │ ├── Period.java │ │ │ ├── TemporalPrimitive.java │ │ │ └── package-info.java │ │ │ └── util │ │ │ ├── CodeList.java │ │ │ ├── ControlledVocabulary.java │ │ │ ├── Factory.java │ │ │ ├── FactoryException.java │ │ │ ├── GenericName.java │ │ │ ├── InternationalString.java │ │ │ ├── LocalName.java │ │ │ ├── MemberName.java │ │ │ ├── NameFactory.java │ │ │ ├── NameSpace.java │ │ │ ├── NoSuchIdentifierException.java │ │ │ ├── Record.java │ │ │ ├── RecordSchema.java │ │ │ ├── RecordType.java │ │ │ ├── ScopedName.java │ │ │ ├── Type.java │ │ │ ├── TypeName.java │ │ │ ├── UnimplementedServiceException.java │ │ │ └── package-info.java │ ├── python │ │ ├── README.md │ │ ├── docs │ │ │ ├── geometry │ │ │ │ ├── overview.md │ │ │ │ └── primitive.md │ │ │ ├── index.md │ │ │ ├── metadata │ │ │ │ ├── acquisition.md │ │ │ │ ├── base.md │ │ │ │ ├── citation.md │ │ │ │ ├── constraints.md │ │ │ │ ├── content.md │ │ │ │ ├── distribution.md │ │ │ │ ├── extension.md │ │ │ │ ├── extent.md │ │ │ │ ├── identification.md │ │ │ │ ├── lineage.md │ │ │ │ ├── maintenance.md │ │ │ │ ├── naming.md │ │ │ │ ├── overview.md │ │ │ │ ├── quality.md │ │ │ │ ├── representation.md │ │ │ │ └── service.md │ │ │ ├── referencing │ │ │ │ ├── common.md │ │ │ │ ├── coordinate.md │ │ │ │ ├── crs.md │ │ │ │ ├── cs.md │ │ │ │ ├── datum.md │ │ │ │ ├── operation.md │ │ │ │ └── overview.md │ │ │ └── util │ │ │ │ ├── measure.md │ │ │ │ └── overview.md │ │ ├── mkdocs.yml │ │ ├── opengis │ │ │ ├── __init__.py │ │ │ ├── geometry │ │ │ │ ├── __init__.py │ │ │ │ └── primitive.py │ │ │ ├── metadata │ │ │ │ ├── __init__.py │ │ │ │ ├── acquisition.py │ │ │ │ ├── base.py │ │ │ │ ├── citation.py │ │ │ │ ├── constraints.py │ │ │ │ ├── content.py │ │ │ │ ├── distribution.py │ │ │ │ ├── extension.py │ │ │ │ ├── extent.py │ │ │ │ ├── identification.py │ │ │ │ ├── lineage.py │ │ │ │ ├── maintenance.py │ │ │ │ ├── naming.py │ │ │ │ ├── quality.py │ │ │ │ ├── representation.py │ │ │ │ └── service.py │ │ │ ├── py.typed │ │ │ ├── referencing │ │ │ │ ├── __init__.py │ │ │ │ ├── common.py │ │ │ │ ├── coordinate.py │ │ │ │ ├── crs.py │ │ │ │ ├── cs.py │ │ │ │ ├── datum.py │ │ │ │ └── operation.py │ │ │ └── util │ │ │ │ ├── __init__.py │ │ │ │ └── measure.py │ │ ├── pyproject.toml │ │ ├── python-todo.md │ │ └── requirements.txt │ └── resources │ │ └── org │ │ └── opengis │ │ ├── annotation │ │ └── class-index.properties │ │ └── metadata │ │ ├── 2003 │ │ └── charset-codes.properties │ │ ├── CodeLists.properties │ │ ├── CodeLists_en.properties │ │ ├── CodeLists_fr.properties │ │ ├── Descriptions.properties │ │ ├── Descriptions_en.properties │ │ ├── Descriptions_en_US.properties │ │ └── Descriptions_fr.properties │ ├── pending │ └── java │ │ ├── module-info.java │ │ └── org │ │ └── opengis │ │ └── geometry │ │ ├── Geometry.java │ │ └── primitive │ │ ├── Point.java │ │ └── package-info.java │ ├── shared │ ├── README.md │ └── java │ │ └── org │ │ └── opengis │ │ └── geoapi │ │ ├── Content.java │ │ ├── package-info.java │ │ └── schema │ │ ├── Departures.java │ │ ├── DocumentationStyle.java │ │ ├── NameSpaces.java │ │ ├── SchemaException.java │ │ ├── SchemaInformation.java │ │ └── package-info.java │ └── test │ ├── java │ └── org │ │ └── opengis │ │ ├── annotation │ │ └── ResourceBundlesTest.java │ │ ├── coordinate │ │ └── CoordinateSetTest.java │ │ ├── filter │ │ ├── FilterExpressionsTest.java │ │ ├── FilterNameTest.java │ │ ├── NameTest.java │ │ └── TemporalOperatorNameTest.java │ │ ├── geoapi │ │ ├── ClassIndexTest.java │ │ ├── CodeListTest.java │ │ ├── CompatibilityTest.java │ │ ├── CompatibilityVerifier.java │ │ ├── ContentTest.java │ │ ├── IncompatibleChange.java │ │ ├── MethodSignatureTest.java │ │ ├── ProducesTest.java │ │ ├── Release.java │ │ └── SourceGenerator.java │ │ ├── metadata │ │ ├── DescriptionsTest.java │ │ ├── LegacyCodesTest.java │ │ └── quality │ │ │ ├── ElementImpl.java │ │ │ ├── ElementTest.java │ │ │ ├── EvaluationMethodImpl.java │ │ │ └── ValueStructureTest.java │ │ ├── referencing │ │ ├── AuthorityFactoryMock.java │ │ ├── AuthorityFactoryTest.java │ │ ├── IdentifiedObjectMock.java │ │ ├── ReferenceSystemTypeTest.java │ │ ├── RegisterOperationsMock.java │ │ ├── RegisterOperationsTest.java │ │ ├── crs │ │ │ ├── CompoundCRSMock.java │ │ │ ├── CompoundCRSTest.java │ │ │ └── CoordinateSystemMock.java │ │ ├── cs │ │ │ ├── AxisDirectionTest.java │ │ │ └── TimeUnitTest.java │ │ └── operation │ │ │ ├── MatrixMock.java │ │ │ └── MatrixTest.java │ │ └── util │ │ └── CodeListTest.java │ └── python │ └── test_metadata.py ├── ogcmetanorma.json ├── pom.xml ├── src ├── README.md ├── main │ ├── javadoc │ │ ├── README.md │ │ ├── content.css │ │ ├── content.html │ │ ├── departure.css │ │ ├── geoapi.css │ │ ├── overview.html │ │ └── warning.png │ ├── metanorma │ │ ├── .gitignore │ │ ├── Gemfile │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── build.sh │ │ ├── code │ │ │ └── java │ │ │ │ ├── JNDI.adoc │ │ │ │ ├── annotation.adoc │ │ │ │ ├── code_list.adoc │ │ │ │ ├── coordinate_operation.adoc │ │ │ │ ├── create_crs.adoc │ │ │ │ ├── internationalization.adoc │ │ │ │ ├── metadata.adoc │ │ │ │ └── parameterized_units.adoc │ │ ├── figures │ │ │ ├── annotations.svg │ │ │ ├── derivatives.png │ │ │ ├── enumeration_examples.svg │ │ │ ├── expression.svg │ │ │ ├── factories.svg │ │ │ ├── filter.svg │ │ │ ├── filter_function.svg │ │ │ ├── localization.svg │ │ │ ├── math_transform.svg │ │ │ ├── metadata.svg │ │ │ ├── metadata_referencing.svg │ │ │ ├── names.svg │ │ │ ├── packages.svg │ │ │ ├── path_components.svg │ │ │ ├── records.svg │ │ │ └── referencing.svg │ │ ├── geoapi.css │ │ ├── metanorma.yml │ │ ├── requirements │ │ │ ├── README.md │ │ │ ├── class_app.adoc │ │ │ ├── class_lib.adoc │ │ │ ├── req_behavior.adoc │ │ │ ├── req_factory_methods.adoc │ │ │ ├── req_getters.adoc │ │ │ ├── req_implementation_discovery.adoc │ │ │ ├── req_setters.adoc │ │ │ └── req_signatures.adoc │ │ ├── sections │ │ │ ├── annex-bibliography.adoc │ │ │ ├── annex-code.adoc │ │ │ ├── annex-history.adoc │ │ │ ├── annex-tests.adoc │ │ │ ├── clause_0_front_material.adoc │ │ │ ├── clause_1_scope.adoc │ │ │ ├── clause_2_conformance.adoc │ │ │ ├── clause_3_references.adoc │ │ │ ├── clause_4_terms_and_definitions.adoc │ │ │ ├── clause_5_conventions.adoc │ │ │ ├── clause_6_informative_text.adoc │ │ │ ├── clause_7_normative_text.adoc │ │ │ ├── informative │ │ │ │ ├── annotations.adoc │ │ │ │ ├── collections.adoc │ │ │ │ ├── common_types.adoc │ │ │ │ ├── controlled_vocabulary.adoc │ │ │ │ ├── core_types.adoc │ │ │ │ ├── datetime.adoc │ │ │ │ ├── derived_properties.adoc │ │ │ │ ├── feature │ │ │ │ │ ├── index.adoc │ │ │ │ │ └── moving.adoc │ │ │ │ ├── filter │ │ │ │ │ ├── capabilities.adoc │ │ │ │ │ ├── departures.adoc │ │ │ │ │ ├── expression.adoc │ │ │ │ │ ├── filter.adoc │ │ │ │ │ └── index.adoc │ │ │ │ ├── generic_name.adoc │ │ │ │ ├── geometry │ │ │ │ │ ├── departures.adoc │ │ │ │ │ └── index.adoc │ │ │ │ ├── internationalization.adoc │ │ │ │ ├── mapping_rules.adoc │ │ │ │ ├── metadata │ │ │ │ │ ├── departures.adoc │ │ │ │ │ ├── index.adoc │ │ │ │ │ ├── mapping.adoc │ │ │ │ │ ├── nil_values.adoc │ │ │ │ │ └── reference_system.adoc │ │ │ │ ├── multiplicity.adoc │ │ │ │ ├── naming.adoc │ │ │ │ ├── parameters.adoc │ │ │ │ ├── records.adoc │ │ │ │ ├── referencing │ │ │ │ │ ├── coordinate_operation.adoc │ │ │ │ │ ├── coordinate_system.adoc │ │ │ │ │ ├── departures.adoc │ │ │ │ │ ├── factories.adoc │ │ │ │ │ ├── index.adoc │ │ │ │ │ ├── math_transform.adoc │ │ │ │ │ └── wkt.adoc │ │ │ │ ├── temporal │ │ │ │ │ ├── departures.adoc │ │ │ │ │ └── index.adoc │ │ │ │ └── units.adoc │ │ │ └── profiles │ │ │ │ ├── java │ │ │ │ ├── annex.adoc │ │ │ │ ├── filter.adoc │ │ │ │ ├── tests.adoc │ │ │ │ └── uom_jsr.adoc │ │ │ │ └── python │ │ │ │ └── annex.adoc │ │ ├── standard.adoc │ │ └── tests │ │ │ ├── README.adoc │ │ │ ├── class_core.adoc │ │ │ ├── test_invariants.adoc │ │ │ └── test_signatures.adoc │ └── python │ │ ├── MANIFEST.in │ │ ├── README.md │ │ ├── build.py │ │ └── setup.py └── release-notes.properties └── tools ├── README.md ├── pom.xml └── src ├── main ├── bash │ ├── README.md │ ├── generate-javadoc.sh │ ├── update_all.sh │ └── update_copyright_years.sh └── java │ ├── module-info.java │ └── org │ └── opengis │ └── tools │ ├── apt │ ├── Classes.java │ ├── IndexGenerator.java │ ├── UMLMember.java │ ├── UmlProcessor.java │ └── package-info.java │ ├── doclet │ ├── BlockTaglet.java │ ├── Departure.java │ ├── DepartureElement.java │ ├── FlushableDoclet.java │ └── package-info.java │ └── version │ ├── ChangeReport.java │ ├── Dependency.java │ ├── JavaElement.java │ ├── JavaElementChanges.java │ ├── JavaElementCollector.java │ ├── JavaElementKind.java │ ├── Version.java │ └── package-info.java └── test └── java └── org └── opengis └── tools ├── apt └── RunCompilation.java └── version └── VersionTest.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Maven files 2 | target/ 3 | 4 | # Netbeans files 5 | nbactions.xml 6 | 7 | # Eclipse files 8 | .classpath 9 | .project 10 | .settings/ 11 | 12 | # IntelliJ files 13 | .idea/ 14 | *.iml 15 | 16 | # VS Code settings 17 | .vscode/ 18 | 19 | # MacOS files 20 | .DS_Store 21 | 22 | # Magic/Mojo 23 | .magic 24 | 25 | # Python related files 26 | # ------------------------------------------------ 27 | # Python files 28 | __pycache__/ 29 | *.pyc 30 | 31 | # python virtual environments 32 | .venv 33 | venv 34 | 35 | # Ruff linter cache 36 | .ruff_cache 37 | 38 | # static type checking 39 | .mypy_cache 40 | 41 | # unit tests 42 | .pytest_cache 43 | 44 | # build files 45 | geoapi.egg-info/ 46 | # ------------------------------------------------ 47 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/ComputationFailure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2011-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.test; 19 | 20 | import org.opentest4j.AssertionFailedError; 21 | 22 | 23 | /** 24 | * Base class for exceptions thrown when a numerical computation did not produced 25 | * the expected value. 26 | * 27 | * @author Martin Desruisseaux (Geomatys) 28 | * @version 3.1 29 | * @since 3.1 30 | */ 31 | public abstract class ComputationFailure extends AssertionFailedError { 32 | /** 33 | * For cross-version compatibility. 34 | */ 35 | private static final long serialVersionUID = 7082843147964652170L; 36 | 37 | /** 38 | * Creates a new exception with the given message. 39 | * 40 | * @param message the details message. 41 | */ 42 | public ComputationFailure(final String message) { 43 | super(message); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/coverage/image/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2012-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Test suites for coverage implemented on top of the Java Image I/O API. 21 | * Using the standard Image I/O API is one possible implementation strategy among others. 22 | * For vendors who choose this strategy, this package may facilitate their tests. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @version 3.1 26 | * @since 3.1 27 | */ 28 | package org.opengis.test.coverage.image; 29 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/dataset/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2018-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Provides small test data files together with verification methods for applications reading those data. 21 | * The test files are less than 15 kilobytes since their purpose is not to test implementation scalability. 22 | * The test files are intentionally simple, sometimes with only a subset of the metadata found in the field, 23 | * for making easier for application developers to use them in a debugging session. 24 | * 25 | * @author Martin Desruisseaux (Geomatys) 26 | * @version 3.1 27 | * @since 3.1 28 | */ 29 | package org.opengis.test.dataset; 30 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/geometry/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Validators and test suites for the {@code org.opengis.geometry} package. 21 | * 22 | * @author Martin Desruisseaux (Geomatys) 23 | * @version 3.0 24 | * @since 2.2 25 | */ 26 | package org.opengis.test.geometry; 27 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/metadata/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Validators and test suites for the {@code org.opengis.metadata} package. The main validator 21 | * is {@link org.opengis.test.metadata.MetadataBaseValidator#validate(org.opengis.metadata.Metadata) 22 | * MetadataBaseValidator.validate(Metadata)}. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @version 3.1 26 | * @since 2.2 27 | */ 28 | package org.opengis.test.metadata; 29 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/referencing/DerivativeFailure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2011-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.test.referencing; 19 | 20 | import org.opengis.test.ComputationFailure; 21 | import org.opengis.referencing.operation.MathTransform; 22 | 23 | 24 | /** 25 | * Thrown by {@link TransformTestCase#verifyDerivative(double[])} when a transform 26 | * {@linkplain MathTransform#derivative(DirectPosition) derivative} did not produced 27 | * the expected values. 28 | * 29 | * @author Martin Desruisseaux (Geomatys) 30 | * @version 3.1 31 | * @since 3.1 32 | */ 33 | public class DerivativeFailure extends ComputationFailure { 34 | /** 35 | * For cross-version compatibility. 36 | */ 37 | private static final long serialVersionUID = -6513702144732051132L; 38 | 39 | /** 40 | * Creates a new exception with the given message. 41 | * 42 | * @param message the details message. 43 | */ 44 | public DerivativeFailure(final String message) { 45 | super(message); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/referencing/TransformFailure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.test.referencing; 19 | 20 | import org.opengis.test.ComputationFailure; 21 | import org.opengis.referencing.operation.MathTransform; 22 | 23 | 24 | /** 25 | * Thrown by {@link TransformTestCase} when a {@link MathTransform} did not produced 26 | * the expected value. 27 | * 28 | * @author Martin Desruisseaux (Geomatys) 29 | * @version 3.0 30 | * @since 2.2 31 | */ 32 | public class TransformFailure extends ComputationFailure { 33 | /** 34 | * For cross-version compatibility. 35 | */ 36 | private static final long serialVersionUID = -7105975654433582652L; 37 | 38 | /** 39 | * Creates a new exception with the given message. 40 | * 41 | * @param message the details message. 42 | */ 43 | public TransformFailure(final String message) { 44 | super(message); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/report/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2011-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Generates HTML pages that summarize the operations provided by a GeoAPI implementation. 21 | * Implementers can override the {@link org.opengis.test.report.Report} subclasses for customizing the reports. 22 | * 23 | * @author Martin Desruisseaux (Geomatys) 24 | * @version 3.1 25 | * @since 3.1 26 | */ 27 | package org.opengis.test.report; 28 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/java/org/opengis/test/util/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Validators and test suites for the {@code org.opengis.util} package. 21 | * 22 | * @author Martin Desruisseaux (Geomatys) 23 | * @version 3.0 24 | * @since 2.2 25 | */ 26 | package org.opengis.test.util; 27 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/dataset/Cube2D_geographic_packed.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/main/resources/org/opengis/test/dataset/Cube2D_geographic_packed.nc -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/dataset/Cube4D_projected_float.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/main/resources/org/opengis/test/dataset/Cube4D_projected_float.nc -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/dataset/MovingFeatures.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/main/resources/org/opengis/test/dataset/MovingFeatures.nc -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/dataset/README.md: -------------------------------------------------------------------------------- 1 | # Directory content 2 | 3 | ## Cube2D_geographic_packed.nc 4 | A two-dimensional netCDF file containing temperature data packed as 16 bits signed integers (only the positive range is used). 5 | The Coordinate Reference System is a geographic with latitudes ranging from 90°S to 90°N and longitudes from 180°E to 180°W. 6 | Based on the freely available `2005092200_sst_21-24.en.nc` test file downloaded from 7 | [Unidate](http://www.unidata.ucar.edu/software/netcdf-java/formats/DataDiscoveryAttConvention.html) on October 5, 2011. 8 | Decimated and transformed for GeoAPI conformance test purpose. 9 | 10 | 11 | ## Cube4D_projected_float.nc 12 | A four-dimensional netCDF file containing "Current Icing Product" data, decimated and cropped. 13 | The Coordinate Reference System is projected, with an elevation above geoid and a time axis. 14 | The geographic area is East of North America. 15 | Based on a file was kindly provided by Aaron Braeckel from UCAR. 16 | Cropped and transformed for GeoAPI conformance test purpose. 17 | 18 | 19 | ## MovingFeatures.nc 20 | A small extract of `JaPOPPO.csv` example file from Moving Features standard working group. 21 | Encoded as specified in [OGC 16-114](http://docs.opengeospatial.org/bp/16-114r3/16-114r3.html). 22 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/report/AuthorityCodes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ${TITLE} 6 | 7 | 8 | 9 |
10 |

${TITLE}

11 |

This list is generated from the ${FACTORY.NAME} dataset version ${FACTORY.VERSION}${FACTORY.VERSION.SUFFIX}. 12 | All those ${OBJECTS.KIND} are supported by the ${PRODUCT.NAME} 13 | library version ${PRODUCT.VERSION}${PRODUCT.VERSION.SUFFIX}, 14 | except those with a red text in the last column. 15 | There is ${COUNT.OBJECTS} codes, ${PERCENT.VALIDS} of them being supported.

16 | 17 | ${DESCRIPTION} 18 | 19 | 20 | 21 | ${CONTENT} 22 |
CodeNameRemarks
23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/report/OperationParameters.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ${TITLE} 6 | 7 | 8 | 9 |
10 |

${TITLE}

11 |

This list is generated from the ${PRODUCT.NAME} library version ${PRODUCT.VERSION}. 12 | The rows are grouped by ${OBJECTS.KIND} in bold characters, followed by their 13 | parameters. 14 | The names in italic are primary names 15 | while other names are aliases. 16 | All those names and aliases are known to the library.

17 | 18 | ${DESCRIPTION} 19 | 20 | ${CONTENT} 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/report/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Table of contents 6 | 7 | 8 | 9 |
10 |

Table of contents

11 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/runner/documentinfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/main/resources/org/opengis/test/runner/documentinfo.png -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/runner/mydocuments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/main/resources/org/opengis/test/runner/mydocuments.png -------------------------------------------------------------------------------- /geoapi-conformance/src/main/resources/org/opengis/test/runner/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/main/resources/org/opengis/test/runner/start.png -------------------------------------------------------------------------------- /geoapi-conformance/src/test/resources/org/opengis/test/coverage/image/PointLoma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-conformance/src/test/resources/org/opengis/test/coverage/image/PointLoma.png -------------------------------------------------------------------------------- /geoapi-conformance/src/test/resources/org/opengis/test/coverage/image/README.md: -------------------------------------------------------------------------------- 1 | ## Image sources: 2 | 3 | ### PointLoma.png 4 | File `2.1.09.tiff` from http://sipi.usc.edu/database 5 | smoothed and reduced to a size of 192×192 pixels. 6 | Considered free to use (from web site on 2012-06-07). 7 | -------------------------------------------------------------------------------- /geoapi-examples/src/main/java/org/opengis/example/coverage/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | 7 | /** 8 | * Implementation of some interfaces from the {@link org.opengis.coverage} package. 9 | * 10 | *

Every classes in this package are hereby placed into the Public Domain. 11 | * This means anyone is free to do whatever they wish with those files.

12 | */ 13 | package org.opengis.example.coverage; 14 | -------------------------------------------------------------------------------- /geoapi-examples/src/main/java/org/opengis/example/geometry/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | 7 | /** 8 | * Implementation of some interfaces from the {@link org.opengis.geometry} package. 9 | * 10 | *

Every classes in this package are hereby placed into the Public Domain. 11 | * This means anyone is free to do whatever they wish with those files.

12 | */ 13 | package org.opengis.example.geometry; 14 | -------------------------------------------------------------------------------- /geoapi-examples/src/main/java/org/opengis/example/metadata/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | 7 | /** 8 | * Implementation of some interfaces from the {@link org.opengis.metadata} package. This package 9 | * demonstrates that it is possible to implement all interfaces in the {@code org.opengis.metadata} 10 | * package and sub-packages with minimal effort using {@link java.lang.reflect.Proxy}. 11 | * This implementation stores the metadata values in {@link java.util.Map} objects, but the same 12 | * strategy can also be applied on a wide variety of storage mechanisms like JDBC connection or a 13 | * LDAP protocol. 14 | * 15 | *

In addition to the proxy classes, this package provides an explicit implementation of the 16 | * {@link org.opengis.metadata.citation.Citation} interface because it is widely used by the 17 | * referencing packages.

18 | * 19 | *

Every classes in this package are hereby placed into the Public Domain. 20 | * This means anyone is free to do whatever they wish with those files.

21 | */ 22 | package org.opengis.example.metadata; 23 | -------------------------------------------------------------------------------- /geoapi-examples/src/main/java/org/opengis/example/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | 7 | /** 8 | * Access to examples of GeoAPI implementations. 9 | * This package is provided only for illustrative purposes with simple implementations. 10 | * This package is not for use in production. 11 | * For real applications, use a library implementing GeoAPI or providing GeoAPI wrappers. 12 | */ 13 | package org.opengis.example; 14 | -------------------------------------------------------------------------------- /geoapi-examples/src/main/java/org/opengis/example/referencing/SimpleMatrix.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | package org.opengis.example.referencing; 7 | 8 | import javax.vecmath.GMatrix; 9 | import org.opengis.referencing.operation.Matrix; 10 | 11 | 12 | /** 13 | * A {@link Matrix} built on top of Java3D {@code vecmath} library. 14 | */ 15 | public class SimpleMatrix extends GMatrix implements Matrix { 16 | /** 17 | * For cross-version compatibility. 18 | */ 19 | private static final long serialVersionUID = -1756594679120634738L; 20 | 21 | /** 22 | * Creates a matrix of size {@code numRow} × {@code numCol}. 23 | * Elements on the diagonal (j == i) are set to 1. 24 | * 25 | * @param numRow number of rows. 26 | * @param numCol number of columns. 27 | */ 28 | public SimpleMatrix(final int numRow, final int numCol) { 29 | super(numRow, numCol); 30 | } 31 | 32 | /** 33 | * Creates a new matrix initialized to the same content as the given matrix. 34 | * 35 | * @param matrix the matrix to copy. 36 | */ 37 | @SuppressWarnings("this-escape") 38 | public SimpleMatrix(final Matrix matrix) { 39 | super(matrix.getNumRow(), matrix.getNumCol()); 40 | for (int j=super.getNumRow(); --j>=0;) { 41 | for (int i=super.getNumCol(); --i>=0;) { 42 | setElement(j, i, matrix.getElement(j, i)); 43 | } 44 | } 45 | } 46 | 47 | /** 48 | * Returns a clone of this matrix. 49 | */ 50 | @Override 51 | public SimpleMatrix clone() { 52 | return (SimpleMatrix) super.clone(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /geoapi-examples/src/main/java/org/opengis/example/util/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | 7 | /** 8 | * Implementation of some interfaces from the {@link org.opengis.util} package. 9 | * The {@link org.opengis.example.util.SimpleName} and related classes are built 10 | * on top of the JNDI {@link javax.naming} package. 11 | * 12 | *

Every classes in this package are hereby placed into the Public Domain. 13 | * This means anyone is free to do whatever they wish with those files.

14 | */ 15 | package org.opengis.example.util; 16 | -------------------------------------------------------------------------------- /geoapi-examples/src/test/java/org/opengis/example/referencing/AffineTransform2DTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | package org.opengis.example.referencing; 7 | 8 | import org.opengis.util.FactoryException; 9 | import org.opengis.referencing.operation.TransformException; 10 | import org.opengis.test.referencing.AffineTransformTest; 11 | import org.junit.jupiter.api.AfterEach; 12 | import org.junit.jupiter.api.Test; 13 | 14 | import static org.junit.jupiter.api.Assertions.*; 15 | 16 | 17 | /** 18 | * Tests {@link AffineTransform2D} using the 19 | * geoapi-conformance 20 | * module. 21 | */ 22 | public class AffineTransform2DTest extends AffineTransformTest { 23 | /** 24 | * Creates a new test case. 25 | */ 26 | public AffineTransform2DTest() { 27 | super(ProjectiveTransformTest.factory()); 28 | } 29 | 30 | /** 31 | * Declares that our implementation cannot invert such transform, then delegate to the parent class. 32 | */ 33 | @Test 34 | @Override 35 | public void testDimensionReduction() throws FactoryException, TransformException { 36 | isInverseTransformSupported = false; 37 | super.testDimensionReduction(); 38 | } 39 | 40 | /** 41 | * Invoked after every tests in order to ensure that the transform created by the factory 42 | * is of the expected type. 43 | */ 44 | @AfterEach 45 | public void ensureExpectedTransformClass() { 46 | assertEquals(ProjectiveTransform.class, transform.getClass(), "Unexpected transform instance."); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /geoapi-examples/src/test/java/org/opengis/example/util/SimpleNameTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * This file is hereby placed into the Public Domain. 4 | * This means anyone is free to do whatever they wish with this file. 5 | */ 6 | package org.opengis.example.util; 7 | 8 | import org.opengis.test.util.NameTest; 9 | 10 | 11 | /** 12 | * Tests the {@link SimpleName} implementations. 13 | * This class inherits its the tests from the {@code geoapi-conformance} module. 14 | */ 15 | public class SimpleNameTest extends NameTest { 16 | /** 17 | * Initializes a new test case using the {@linkplain SimpleNameFactory#DEFAULT default factory}. 18 | */ 19 | public SimpleNameTest() { 20 | super(SimpleNameFactory.DEFAULT); 21 | isMultiLocaleSupported = false; 22 | isMixedNameSyntaxSupported = false; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /geoapi-java-python/src/main/java/org/opengis/bridge/python/EnvironmentException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2018-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.bridge.python; 19 | 20 | 21 | /** 22 | * Thrown if a configuration error prevents the Java-Python bridge to work normally. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @version 4.0 26 | * @since 4.0 27 | */ 28 | public class EnvironmentException extends RuntimeException { 29 | /** 30 | * For cross-version compatibility. 31 | */ 32 | private static final long serialVersionUID = 8844371625357866961L; 33 | 34 | /** 35 | * Creates a new exception with the given message and cause. 36 | * 37 | * @param message a description of the problem. 38 | * @param cause the cause of this problem. 39 | */ 40 | public EnvironmentException(final String message, final Exception cause) { 41 | super(message, cause); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /geoapi-java-python/src/main/java9/module-info.txt: -------------------------------------------------------------------------------- 1 | This module does not yet declare a module-info.java file because it 2 | depends on JAR files that are not yet available as Java 9 modules. 3 | -------------------------------------------------------------------------------- /geoapi-java-python/src/main/python/opengis/bridge/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Python implementation of GeoAPI delegating the work to an implementation in another language. 3 | """ 4 | -------------------------------------------------------------------------------- /geoapi-java-python/src/main/python/opengis/bridge/java/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Python implementation of GeoAPI delegating the work to a Java implementation. 3 | """ 4 | -------------------------------------------------------------------------------- /geoapi-java-python/src/main/resources/org/opengis/bridge/python/subclassed.txt: -------------------------------------------------------------------------------- 1 | org.opengis.metadata.citation.Party 2 | org.opengis.metadata.citation.Responsibility 3 | org.opengis.metadata.constraint.Constraints 4 | org.opengis.metadata.content.ContentInformation 5 | org.opengis.metadata.content.CoverageDescription 6 | org.opengis.metadata.content.RangeDimension 7 | org.opengis.metadata.content.SampleDimension 8 | org.opengis.metadata.extent.GeographicExtent 9 | org.opengis.metadata.extent.TemporalExtent 10 | org.opengis.metadata.identification.AssociatedResource 11 | org.opengis.metadata.identification.Identification 12 | org.opengis.metadata.quality.Completeness 13 | org.opengis.metadata.quality.Element 14 | org.opengis.metadata.quality.LogicalConsistency 15 | org.opengis.metadata.quality.PositionalAccuracy 16 | org.opengis.metadata.quality.Result 17 | org.opengis.metadata.quality.TemporalAccuracy 18 | org.opengis.metadata.quality.ThematicAccuracy 19 | org.opengis.metadata.spatial.GeolocationInformation 20 | org.opengis.metadata.spatial.GridSpatialRepresentation 21 | org.opengis.metadata.spatial.SpatialRepresentation 22 | org.opengis.parameter.GeneralParameterDescriptor 23 | org.opengis.parameter.GeneralParameterValue 24 | org.opengis.referencing.IdentifiedObject 25 | org.opengis.referencing.ReferenceSystem 26 | org.opengis.referencing.crs.CoordinateReferenceSystem 27 | org.opengis.referencing.crs.DerivedCRS 28 | org.opengis.referencing.crs.GeodeticCRS 29 | org.opengis.referencing.crs.SingleCRS 30 | org.opengis.referencing.cs.AffineCS 31 | org.opengis.referencing.cs.CoordinateSystem 32 | org.opengis.referencing.datum.Datum 33 | org.opengis.referencing.operation.CoordinateOperation 34 | org.opengis.referencing.operation.SingleOperation 35 | -------------------------------------------------------------------------------- /geoapi-java-python/src/test/python/test_referencing.py: -------------------------------------------------------------------------------- 1 | # 2 | # GeoAPI - Programming interfaces for OGC/ISO standards 3 | # Copyright © 2019-2023 Open Geospatial Consortium, Inc. 4 | # http://www.geoapi.org 5 | # 6 | 7 | # 8 | # To run this demo, the PYTHONPATH environmental variable must be set to a directory which 9 | # contain at least the "geoapi/src/main/python" and "geoapi-java-python/src/main/python" 10 | # content (such directory can be created for example by "geoapi-python-wheel" module; we may 11 | # provide a simpler approach in the future if https://github.com/opengeospatial/geoapi/issues/30 12 | # is done.) 13 | # 14 | # In addition, JPY_PY_CONFIG environment variable shall be set to the path to a jpyconfig.py file, 15 | # and that file shall contain paths to a Java implementation of GeoAPI as documented in 16 | # http://www.geoapi.org/java-python/index.html 17 | # 18 | # To execute this test on command-line: 19 | # 20 | # cd $GEOAPI_HOME/geoapi-java-python/src/test/python 21 | # python -m unittest discover 22 | # 23 | 24 | import jpyutil 25 | jpyutil.init_jvm() 26 | 27 | import jpy 28 | import opengis.bridge.java.referencing 29 | import unittest 30 | 31 | 32 | class TestReferencing(unittest.TestCase): 33 | 34 | def test_find_crs(self): 35 | self._handler = jpy.get_type('org.opengis.bridge.python.PythonHelper') 36 | value = self._handler.findCoordinateReferenceSystem("EPSG:3395") 37 | if value: 38 | crs = opengis.bridge.java.referencing.CoordinateReferenceSystem(value) 39 | self.assertEqual(crs.name.code, "WGS 84 / World Mercator") 40 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/CurveValuePair.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2005-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.coverage; 19 | 20 | import org.opengis.geometry.primitive.Curve; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * A {@linkplain GeometryValuePair geometry-value pair} that has a {@linkplain Curve curve} 29 | * as the value of its geometry attribute. 30 | * 31 | * @version ISO 19123:2004 32 | * @author Alessio Fabiani 33 | * @author Martin Desruisseaux (IRD) 34 | * @since GeoAPI 2.1 35 | */ 36 | @UML(identifier="CV_CurveValuePair", specification=ISO_19123) 37 | public interface CurveValuePair extends GeometryValuePair { 38 | /** 39 | * The domain object that is a member of this geometry-value pair. 40 | * 41 | * @return the geometry member of the pair. 42 | */ 43 | @UML(identifier="geometry", obligation=MANDATORY, specification=ISO_19123) 44 | DomainObject getGeometry(); 45 | } 46 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/PointValuePair.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2005-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.coverage; 19 | 20 | import org.opengis.geometry.primitive.Point; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * A {@linkplain GeometryValuePair geometry-value pair} that has a {@linkplain Point point} 29 | * as the value of its geometry attribute. 30 | * 31 | * @version ISO 19123:2004 32 | * @author Wim Koolhoven 33 | * @since GeoAPI 2.1 34 | */ 35 | @UML(identifier="CV_PointValuePair", specification=ISO_19123) 36 | public interface PointValuePair extends GeometryValuePair { 37 | /** 38 | * The point that is a member of this point-value pair. 39 | */ 40 | @UML(identifier="geometry", obligation=MANDATORY, specification=ISO_19123) 41 | DomainObject getGeometry(); 42 | } 43 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/SolidValuePair.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2005-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.coverage; 19 | 20 | import org.opengis.geometry.primitive.Solid; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * A {@linkplain GeometryValuePair geometry-value pair} that has a {@linkplain Solid solid} 29 | * as the value of its geometry attribute. 30 | * 31 | * @version ISO 19123:2004 32 | * @author Alessio Fabiani 33 | * @author Martin Desruisseaux (IRD) 34 | * @since GeoAPI 2.1 35 | */ 36 | @UML(identifier="CV_SolidValuePair", specification=ISO_19123) 37 | public interface SolidValuePair extends GeometryValuePair { 38 | /** 39 | * The domain object that is a member of this geometry-value pair. 40 | * 41 | * @return the geometry member of the pair. 42 | */ 43 | @UML(identifier="geometry", obligation=MANDATORY, specification=ISO_19123) 44 | DomainObject getGeometry(); 45 | } 46 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/SurfaceValuePair.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2005-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.coverage; 19 | 20 | import org.opengis.geometry.primitive.Surface; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * A {@linkplain GeometryValuePair geometry-value pair} that has a {@linkplain Surface surface} 29 | * as the value of its geometry attribute. 30 | * 31 | * @version ISO 19123:2004 32 | * @author Alessio Fabiani 33 | * @author Martin Desruisseaux (IRD) 34 | * @since GeoAPI 2.1 35 | */ 36 | @UML(identifier="CV_SurfaceValuePair", specification=ISO_19123) 37 | public interface SurfaceValuePair extends GeometryValuePair { 38 | /** 39 | * The domain object that is a member of this geometry-value pair. 40 | * 41 | * @return the geometry member of the pair. 42 | */ 43 | @UML(identifier="geometry", obligation=MANDATORY, specification=ISO_19123) 44 | DomainObject getGeometry(); 45 | } 46 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/BoustrophedonicScanning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/BoustrophedonicScanning.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/CantorDiagonalScanning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/CantorDiagonalScanning.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/Hilbert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/Hilbert.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/LinearScanning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/LinearScanning.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/Morton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/Morton.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/SpiralScanning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/coverage/grid/doc-files/SpiralScanning.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/aggregate/Aggregate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.aggregate; 19 | 20 | import java.util.Set; 21 | import org.opengis.geometry.Geometry; 22 | import org.opengis.annotation.UML; 23 | 24 | import static org.opengis.annotation.Obligation.*; 25 | import static org.opengis.annotation.Specification.*; 26 | 27 | 28 | /** 29 | * Geometry that is an aggregate of other geometries. 30 | * 31 | * @version ISO 19107 32 | * @since GeoAPI 1.0 33 | */ 34 | @UML(identifier="GM_Aggregate", specification=ISO_19107) 35 | public interface Aggregate extends Geometry { 36 | /** 37 | * Returns the set containing the elements that compose this aggregate. The 38 | * set may be modified if this geometry {@linkplain #isMutable is mutable}. 39 | * 40 | * @return the set containing the elements that compose this aggregate. 41 | */ 42 | @UML(identifier="element", obligation=MANDATORY, specification=ISO_19107) 43 | Set getElements(); 44 | } 45 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/aggregate/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | package org.opengis.geometry.aggregate 6 | 7 | 8 | {@linkplain org.opengis.geometry.aggregate.Aggregate Aggregations} of geometric objects. 9 | The following is adapted from 10 | Feature Geometry (Topic 1) specification. 11 | 12 |

Arbitrary aggregations of geometric objects are possible. These are not 13 | assumed to have any additional internal structure and are used to "collect" pieces of geometry 14 | of a specified type. In this respect they differ from "composites" and "complexes". Operations 15 | on these aggregations shall be the accumulators that are derived from the class operations of 16 | their elements. Applications may use aggregates for features that use multiple geometric objects 17 | in their representations, such as a collection of points to represent a tank farm or orchard.

18 | 19 | 20 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/complex/ComplexBoundary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.complex; 19 | 20 | import org.opengis.geometry.Boundary; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Specification.*; 24 | 25 | 26 | /** 27 | * The boundary of {@linkplain Complex complex} objects. The 28 | * {@link org.opengis.geometry.Geometry#getBoundary getBoundary()} method for {@link Complex} 29 | * objects shall return a {@code ComplexBoundary}, which is a collection of primitives 30 | * and a {@linkplain Complex complex} of dimension 1 less than the original object. 31 | * 32 | * @version ISO 19107 33 | * @author Martin Desruisseaux (IRD) 34 | * @since GeoAPI 1.0 35 | */ 36 | @UML(identifier="GM_ComplexBoundary", specification=ISO_19107) 37 | public interface ComplexBoundary extends Boundary { 38 | } 39 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/ArcByBulge.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.coordinate; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Equivalents to the {@link Arc}, except the bulge representation is maintained. 27 | * 28 | * @version ISO 19107 29 | * @author Martin Desruisseaux (IRD) 30 | * @since GeoAPI 1.0 31 | */ 32 | @UML(identifier="GM_ArcByBulge", specification=ISO_19107) 33 | public interface ArcByBulge extends ArcStringByBulge { 34 | /** 35 | * Recast as a base {@linkplain Arc arc}. 36 | * 37 | * @return This arc by bulge as a base {@linkplain Arc arc}. 38 | */ 39 | Arc asArcString(); 40 | } 41 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/Bezier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.coordinate; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Polynomial splines that use Bezier or Bernstein polynomials for interpolation 27 | * purposes. An n-long control point array shall create a polynomial 28 | * curve of degree n that defines the entire curve segment. These curves 29 | * are defined in terms of a set of basis functions called the Bézier or Bernstein 30 | * polynomials. 31 | * 32 | * @version ISO 19107 33 | * @author Martin Desruisseaux (IRD) 34 | * @since GeoAPI 2.0 35 | * 36 | * @todo Add equations from ISO 19107 to the javadoc. 37 | */ 38 | @UML(identifier="GM_Bezier", specification=ISO_19107) 39 | public interface Bezier extends BSplineCurve { 40 | } 41 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/BilinearGrid.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.coordinate; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * A {@linkplain GriddedSurface gridded surface} that uses line strings as the horizontal and 27 | * vertical curves. This is not a polygonal surface, since each of the grid squares is a ruled 28 | * surface, and not necessarily planar. 29 | * 30 | * @version ISO 19107 31 | * @author Martin Desruisseaux (IRD) 32 | * @since GeoAPI 2.0 33 | */ 34 | @UML(identifier="GM_BilinearGrid", specification=ISO_19107) 35 | public interface BilinearGrid extends GriddedSurface { 36 | } 37 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/Circle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.coordinate; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Same as an {@linkplain Arc arc}, but closed to form a full circle. 27 | * The {@linkplain #getStartAngle start} and {@linkplain #getEndAngle end bearing} 28 | * are equal and shall be the bearing for the first {@linkplain #getControlPoints 29 | * control point} listed. 30 | * 31 | * This still requires at least 3 distinct non-co-linear points to be unambiguously 32 | * defined. The arc is simply extended until the first point is encountered. 33 | * 34 | * @version ISO 19107 35 | * @author Martin Desruisseaux (IRD) 36 | * @since GeoAPI 1.0 37 | */ 38 | @UML(identifier="GM_Circle", specification=ISO_19107) 39 | public interface Circle extends Arc { 40 | } 41 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/Cylinder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.coordinate; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * A {@linkplain GriddedSurface gridded surface} given as a family of circles whose positions 27 | * vary along a set of parallel lines, keeping the cross sectional horizontal curves of a constant 28 | * shape. Given the same working assumptions as in {@linkplain GriddedSurface gridded surface}, a 29 | * cylinder can be given by two circles, giving us control points of the form 30 | * 31 | * <<P1, P2, P3>, <P4, P5, P6>>. 32 | * 33 | * @version ISO 19107 34 | * @author Martin Desruisseaux (IRD) 35 | * @since GeoAPI 2.0 36 | */ 37 | @UML(identifier="GM_Cylinder", specification=ISO_19107) 38 | public interface Cylinder extends GriddedSurface { 39 | } 40 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/TriangulatedSurface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.coordinate; 19 | 20 | import java.util.List; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * A polyhedral surface that is composed only of {@linkplain Triangle triangles}. 29 | * There is no restriction on how the triangulation is derived. 30 | * 31 | * @version ISO 19107 32 | * @author Martin Desruisseaux (IRD) 33 | * @since GeoAPI 2.0 34 | */ 35 | @UML(identifier="GM_TriangulatedSurface", specification=ISO_19107) 36 | public interface TriangulatedSurface extends PolyhedralSurface { 37 | /** 38 | * Associates this surface with its individual triangles. 39 | */ 40 | @UML(identifier="patch", obligation=MANDATORY, specification=ISO_19107) 41 | List getPatches(); 42 | } 43 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/doc-files/AffinePlacement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/geometry/coordinate/doc-files/AffinePlacement.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/coordinate/doc-files/ConicCurve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/geometry/coordinate/doc-files/ConicCurve.png -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/geometry/primitive/PrimitiveBoundary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.primitive; 19 | 20 | import org.opengis.geometry.Boundary; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Specification.*; 24 | 25 | 26 | /** 27 | * The boundary of {@linkplain Primitive primitive} objects. This is the root for the various 28 | * return types of the {@link org.opengis.geometry.Geometry#getBoundary getBoundary()} method for 29 | * subtypes of {@link Primitive}. Since points have no boundary, no special subclass is needed 30 | * for their boundary. 31 | * 32 | * @version ISO 19107 33 | * @author Martin Desruisseaux (IRD) 34 | * @since GeoAPI 1.0 35 | */ 36 | @UML(identifier="GM_PrimitiveBoundary", specification=ISO_19107) 37 | public interface PrimitiveBoundary extends Boundary { 38 | } 39 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/AnyFeature.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * This interface represents the set of all classes with the stereotype {@literal <>}. 26 | * This class is implemented in GML by the element gml:AbstractFeature 27 | * 28 | * @version Implementation specification 1.0 29 | * @author Open Geospatial Consortium 30 | * @author Guilhem Legal (Geomatys) 31 | * @since GeoAPI 2.3 32 | */ 33 | @UML(identifier="AnyFeature", specification=OGC_07022) 34 | public interface AnyFeature { 35 | } 36 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/BaseUnit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | /** 21 | * @version Implementation specification 1.0 22 | * @author Open Geospatial Consortium 23 | * @author Guilhem Legal (Geomatys) 24 | * @since GeoAPI 2.3 25 | * 26 | */ 27 | public interface BaseUnit { 28 | 29 | /** 30 | * The alphanumeric identifier of the unit. 31 | */ 32 | String getId(); 33 | 34 | /** 35 | * The full name of the uom. 36 | */ 37 | String getName(); 38 | 39 | /** 40 | * The quantity type. 41 | */ 42 | String getQuantityType(); 43 | 44 | /** 45 | * The system defining this unit f measure. 46 | */ 47 | String getUnitsSystem(); 48 | 49 | } 50 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/CompoundPhenomenon.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | import static org.opengis.annotation.Obligation.*; 24 | 25 | /** 26 | * A CompoundProperty has several components, whose count is indicated by the 27 | * dimension. CompoundProperty is an abstract class. Two concrete specializations 28 | * are provided : CompositeProperty and PropertySeries. 29 | * 30 | * @version Implementation specification 1.0 31 | * @author Open Geospatial Consortium 32 | * @author Guilhem Legal (Geomatys) 33 | * @since GeoAPI 2.3 34 | */ 35 | @UML(identifier="CompoundPhenomenon", specification=OGC_07022) 36 | public interface CompoundPhenomenon extends Phenomenon { 37 | 38 | /** 39 | * The number of components in the tuple. 40 | */ 41 | @UML(identifier="dimension", obligation=MANDATORY, specification=OGC_07022) 42 | int getDimension(); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/Measure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2005-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * Value described using a numeric amount with a scale or using a scalar reference system 26 | * 27 | * @version Implementation specification 1.0 28 | * @author Open Geospatial Consortium 29 | * @author Guilhem Legal (Geomatys) 30 | * @since GeoAPI 2.3 31 | */ 32 | @UML(identifier="Measure", specification=OGC_07022) 33 | public interface Measure { 34 | 35 | /** 36 | * The value of the measure. 37 | */ 38 | float getValue(); 39 | 40 | /** 41 | * The value of uom (Units Of Measure) attribute is a reference to a Reference System for the amount, either a ratio or position scale. 42 | */ 43 | BaseUnit getUom(); 44 | } 45 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/Measurement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | import static org.opengis.annotation.Obligation.*; 24 | 25 | /** 26 | * An observation whose result is a measure 27 | * Measurement event. Carries one "result" properties of type "Measure" 28 | * 29 | * @version Implementation specification 1.0 30 | * @author Open Geospatial Consortium 31 | * @author Guilhem Legal (Geomatys) 32 | * @since GeoAPI 2.3 33 | */ 34 | @UML(identifier="Measurement", specification=OGC_07022) 35 | public interface Measurement extends Observation { 36 | 37 | @UML(identifier="result", obligation=MANDATORY, specification=OGC_07022) 38 | Measure getResult(); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/ObservationCollection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import java.util.List; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Specification.*; 24 | import static org.opengis.annotation.Obligation.*; 25 | 26 | /** 27 | * Observation collection, using the "Composite" pattern 28 | * 29 | * @version Implementation specification 1.0 30 | * @author Open Geospatial Consortium 31 | * @author Guilhem Legal (Geomatys) 32 | * @since GeoAPI 2.3 33 | */ 34 | @UML(identifier="ObservationCollection", specification=OGC_07022) 35 | public interface ObservationCollection { 36 | 37 | @UML(identifier="member", obligation=MANDATORY, specification=OGC_07022) 38 | List getMember(); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/Phenomenon.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * The basic PropertyType class carries a definition, with an identifier and an optional set 26 | * of aliases. Two kinds of specializations are supported: constraints and compounding. 27 | * 28 | * @version Implementation specification 1.0 29 | * @author Open Geospatial Consortium 30 | * @author Guilhem Legal (Geomatys) 31 | * @since GeoAPI 2.3 32 | */ 33 | @UML(identifier="Phenomenon", specification=OGC_07022) 34 | public interface Phenomenon { 35 | } 36 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/Process.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * The description of Observation procedures is beyond the scope of this specification. 26 | * 27 | * NOTE: It is expected that standard process model descriptions will be published in a standard location 28 | * (e.g. ISO 19135 register) enabling them to be used by-reference. 29 | * 30 | * 31 | * @version Implementation specification 1.0 32 | * @author Open Geospatial Consortium 33 | * @author Guilhem Legal (Geomatys) 34 | * @since GeoAPI 2.3 35 | */ 36 | @UML(identifier="Process", specification=OGC_07022) 37 | public interface Process { 38 | } 39 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/ProcessModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * ProcessModel is an atomic procedure. 26 | * 27 | * @version Implementation specification 1.0 28 | * @author Open Geospatial Consortium 29 | * @author Guilhem Legal (Geomatys) 30 | * @since GeoAPI 2.3 31 | */ 32 | @UML(identifier="ProcessModel", specification=OGC_07022) 33 | public interface ProcessModel extends Process { 34 | } 35 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/ProcessSystem.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation; 19 | 20 | import java.util.List; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Specification.*; 24 | import static org.opengis.annotation.Obligation.*; 25 | 26 | /** 27 | * ProcessSystem aggregates sub-processes, which may apply either in parallel (as a 28 | * process package) or sequentially (in a processing chain) or a mixture. 29 | * 30 | * @version Implementation specification 1.0 31 | * @author Open Geospatial Consortium 32 | * @author Guilhem Legal (Geomatys) 33 | * @since GeoAPI 2.3 34 | */ 35 | @UML(identifier="ProcessSystem", specification=OGC_07022) 36 | public interface ProcessSystem extends Process { 37 | 38 | @UML(identifier="component", obligation=MANDATORY, specification=OGC_07022) 39 | List getComponent(); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/coverage/DiscreteTimeInstantCoverage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation.coverage; 19 | 20 | import org.opengis.annotation.UML; 21 | import org.opengis.coverage.DiscreteCoverage; 22 | 23 | import static org.opengis.annotation.Specification.*; 24 | 25 | /** 26 | * Specialization of ISO 19123 CV_DiscreteTimeInstantCoverage. 27 | * Explicit implementation of specialized CV_DiscreteCoverage in which the coverage domain is composed of time-instants. 28 | * 29 | * @version Implementation specification 1.0 30 | * @author Open Geospatial Consortium 31 | * @author Guilhem Legal (Geomatys) 32 | * @since GeoAPI 2.3 33 | */ 34 | @UML(identifier="CV_DiscreteTimeInstantCoverage", specification=OGC_07022) 35 | public interface DiscreteTimeInstantCoverage extends DiscreteCoverage { 36 | 37 | public TimeInstantValuePair element = null; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/coverage/TimeInstantValuePair.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation.coverage; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | import org.opengis.temporal.TemporalPrimitive; 24 | 25 | /** 26 | * Specialization of ISO 19123 CV_GeometryValuePair. 27 | * Explicit implementation of CV_TimeInstantValuePair - this is the temporal equivalent to CV_PointValuePair. 28 | * 29 | * @version Implementation specification 1.0 30 | * @author Open Geospatial Consortium 31 | * @author Guilhem Legal (Geomatys) 32 | * @since GeoAPI 2.3 33 | */ 34 | @UML(identifier="CV_DiscreteTimeInstantCoverage", specification=OGC_07022) 35 | public interface TimeInstantValuePair { 36 | 37 | /** 38 | * Implicitly xs:anyType. Use xsi:type attribute to indicate the datatype at run-time. 39 | */ 40 | Object getValue(); 41 | 42 | TemporalPrimitive getGeometry(); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/sampling/SamplingPoint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation.sampling; 19 | 20 | import org.opengis.geometry.primitive.Point; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Specification.*; 24 | import static org.opengis.annotation.Obligation.*; 25 | 26 | /** 27 | * A SamplingPoint samples its target at a point(0-manifold); 28 | * 29 | * @version Implementation specification 1.0 30 | * @author Open Geospatial Consortium 31 | * @author Guilhem Legal (Geomatys) 32 | * @since GeoAPI 2.3 33 | */ 34 | @UML(identifier="SamplingPoint", specification=OGC_07022) 35 | public interface SamplingPoint extends SamplingFeature { 36 | 37 | /** 38 | * Sampling position. 39 | */ 40 | @UML(identifier="position", obligation=MANDATORY, specification=OGC_07022) 41 | Point getPosition(); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/observation/sampling/SpatiallyExtensiveSamplingFeature.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.observation.sampling; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * Generic interface for SamplingCurve, SamplingSurface and SamplingSolid 26 | * 27 | * @version Implementation specification 1.0 28 | * @author Open Geospatial Consortium 29 | * @author Guilhem Legal (Geomatys) 30 | * @since GeoAPI 2.3 31 | */ 32 | @UML(identifier="SpatiallyExtensiveSamplingFeature", specification=OGC_07022) 33 | public interface SpatiallyExtensiveSamplingFeature extends SamplingFeature { 34 | 35 | } 36 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/referencing/gazetteer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2017-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Mapping between geographic identifiers and locations, either as descriptions or coordinates. 21 | * This package deals only with spatial referencing by geographic identifiers, 22 | * as specified in the {@linkplain org.opengis.annotation.Specification#ISO_19112 ISO 19112} standard. 23 | * Spatial referencing by coordinates (ISO 19111) is the subject of another package, 24 | * namely {@link org.opengis.referencing.crs}. 25 | * 26 | *

Geographic identifiers are location descriptors such as country name, postal code or grid indexes. 27 | * Gazetteers provide linking mechanism between referencing using geographic identifiers (this package) 28 | * and referencing using coordinates ({@link org.opengis.referencing.crs} package).

29 | * 30 | * @author Martin Desruisseaux (Geomatys) 31 | * @version 3.1 32 | * @since 3.1 33 | */ 34 | package org.opengis.referencing.gazetteer; 35 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/GraphicFill.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.style; 19 | 20 | import org.opengis.annotation.XmlElement; 21 | 22 | 23 | /** 24 | * Stipple-fill repeated graphic. 25 | * Graphic and additional parameters for the {@code GraphicFill} may be provided in the 26 | * future to provide more control the exact style of filling. 27 | * We keep this class to reduce future code changes. 28 | * 29 | * @version Symbology Encoding Implementation Specification 1.1.0 30 | * @author Open Geospatial Consortium 31 | * @author Johann Sorel (Geomatys) 32 | */ 33 | @XmlElement("GraphicFill") 34 | public interface GraphicFill extends Graphic { 35 | /** 36 | * Calls the visit method of a StyleVisitor 37 | * 38 | * @param visitor the style visitor 39 | */ 40 | Object accept(StyleVisitor visitor, Object extraData); 41 | } 42 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/GraphicLegend.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.style; 19 | 20 | import org.opengis.annotation.XmlElement; 21 | 22 | 23 | /** 24 | * The LegendGraphic element allow an optional explicit graphic symbolizer 25 | * to do displayed in a legend for the rule. 26 | * 27 | * @version Symbology Encoding Implementation Specification 1.1.0 28 | * @author Open Geospatial Consortium 29 | * @author Johann Sorel (Geomatys) 30 | */ 31 | @XmlElement("LegendGraphic") 32 | public interface GraphicLegend extends Graphic { 33 | /** 34 | * calls the visit method of a StyleVisitor 35 | * 36 | * @param visitor the style visitor 37 | */ 38 | Object accept(StyleVisitor visitor, Object extraData); 39 | } 40 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/GraphicStroke.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.style; 19 | 20 | import org.opengis.annotation.XmlElement; 21 | import org.opengis.filter.Expression; 22 | 23 | 24 | /** 25 | * Repeated-linear-graphic stroke. 26 | * 27 | * @version Symbology Encoding Implementation Specification 1.1.0 28 | * @author Open Geospatial Consortium 29 | * @author Johann Sorel (Geomatys) 30 | */ 31 | @XmlElement("GraphicStroke") 32 | public interface GraphicStroke extends Graphic{ 33 | /** 34 | * How far away the first graphic will be drawn relative to the start of the rendering line. 35 | */ 36 | @XmlElement("InitialGap") 37 | Expression getInitialGap(); 38 | 39 | /** 40 | * Distance between two graphics. 41 | */ 42 | @XmlElement("Gap") 43 | Expression getGap(); 44 | 45 | /** 46 | * Calls the visit method of a StyleVisitor 47 | * 48 | * @param visitor the style visitor 49 | */ 50 | Object accept(StyleVisitor visitor, Object extraData); 51 | } 52 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/GraphicalSymbol.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.style; 19 | 20 | 21 | /** 22 | * Common superclass for the two types of markers that can appear as children of a 23 | * {@link Graphic} object, namely {@link Mark} and {@link ExternalGraphic}. 24 | * 25 | * @version Implementation specification 1.0 26 | * @author Chris Dillard (SYS Technologies) 27 | * @since GeoAPI 2.0 28 | */ 29 | public interface GraphicalSymbol { 30 | } 31 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/LabelPlacement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.style; 19 | 20 | import org.opengis.annotation.XmlElement; 21 | 22 | 23 | /** 24 | * Position of a label relative to a point, line string or polygon. 25 | * 26 | * @version Symbology Encoding Implementation Specification 1.1.0 27 | * @author Open Geospatial Consortium 28 | * @author Johann Sorel (Geomatys) 29 | */ 30 | @XmlElement("LabelPlacement") 31 | public interface LabelPlacement { 32 | /** 33 | * Calls the visit method of a StyleVisitor. 34 | *

35 | * Please note that LabelPalcement is not intended to be used as is; the StyleVisitor 36 | * visit method must traverse an instance of LinePlacement or PointPlacement. 37 | * 38 | * @param visitor the style visitor 39 | */ 40 | Object accept(StyleVisitor visitor, Object extraData); 41 | } 42 | -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/doc-files/rules.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/style/doc-files/rules.jpg -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/doc-files/symbolizers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi-pending/src/main/java/org/opengis/style/doc-files/symbolizers.jpg -------------------------------------------------------------------------------- /geoapi-pending/src/main/java/org/opengis/style/portrayal/PortrayalService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2008-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.style.portrayal; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | /** 25 | * A portrayal service is used to portray a feature instance or instances. 26 | * The portrayal service applies operations using the parameters defined 27 | * in the portrayal specification. 28 | * 29 | * Portrayal shall not be limited to visual rendering, but may include 30 | * audio,tactile and other media. 31 | * 32 | * @version ISO 19117 Portrayal 33 | * @author Open Geospatial Consortium 34 | * @author Johann Sorel (Geomatys) 35 | * @since GeoAPI 2.2 36 | */ 37 | @UML(identifier="PF_PortrayalService", specification=ISO_19117) 38 | public interface PortrayalService { 39 | 40 | } 41 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/filter/capability/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2021-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Metadata about the specific elements that a particular implementation supports. 21 | * A client application can inspect the filter capabilities metadata and be able 22 | * to determine which operators and types a filter expression processor supports. 23 | * 24 | *

Filter capabilities are divided into five categories: 25 | * {@linkplain IdCapabilities id capabilities}, 26 | * {@linkplain ScalarCapabilities scalar capabilities}, 27 | * {@linkplain SpatialCapabilities spatial capabilities}, 28 | * {@linkplain TemporalCapabilities temporal capabilities} 29 | * and the ability to test for the existence or absence of a named property.

30 | * 31 | * @version 3.1 32 | * @since 3.1 33 | */ 34 | package org.opengis.filter.capability; 35 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/geoapi/internal/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Non-public helper methods for default implementation of some GeoAPI methods. 21 | * 22 | * @author Martin Desruisseaux (Geomatys) 23 | * @version 3.1 24 | * @since 3.1 25 | */ 26 | package org.opengis.geoapi.internal; 27 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/geometry/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2011-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Core interfaces needed to investigate coordinate-defined geometry. 21 | * Those interfaces inherit an optional association to a 22 | * {@linkplain org.opengis.referencing.crs.CoordinateReferenceSystem coordinate reference system}. 23 | * All {@linkplain org.opengis.geometry.DirectPosition direct positions} exposed through the interfaces 24 | * shall be in the coordinate reference system of the geometric object accessed. 25 | * 26 | * @author Martin Desruisseaux (IRD, Geomatys) 27 | * @author Axel Francois (LSIS/Geomatys) 28 | * @version 3.1 29 | * @since 1.0 30 | */ 31 | package org.opengis.geometry; 32 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/content/ContentInformation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.content; 19 | 20 | import org.opengis.annotation.UML; 21 | import org.opengis.annotation.Classifier; 22 | import org.opengis.annotation.Stereotype; 23 | 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Description of the content of a resource. 29 | * 30 | * @author Martin Desruisseaux (IRD) 31 | * @version 3.1 32 | * @since 2.0 33 | */ 34 | @Classifier(Stereotype.ABSTRACT) 35 | @UML(identifier="MD_ContentInformation", specification=ISO_19115) 36 | public interface ContentInformation { 37 | } 38 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/extent/BoundingPolygon.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.extent; 19 | 20 | import java.util.Collection; 21 | import org.opengis.geometry.Geometry; 22 | import org.opengis.annotation.UML; 23 | 24 | import static org.opengis.annotation.Obligation.*; 25 | import static org.opengis.annotation.Specification.*; 26 | 27 | 28 | /** 29 | * Enclosing geometric object which locates the resource. 30 | * If a polygon is used is should be closed (last point replicates first point). 31 | * 32 | * @author Martin Desruisseaux (IRD) 33 | * @version 3.0 34 | * @since 1.0 35 | */ 36 | @UML(identifier="EX_BoundingPolygon", specification=ISO_19115) 37 | public interface BoundingPolygon extends GeographicExtent { 38 | /** 39 | * The sets of points defining the bounding polygon or any other geometry (point, line). 40 | * 41 | * @return the sets of points defining the resource boundary. 42 | */ 43 | @UML(identifier="polygon", obligation=MANDATORY, specification=ISO_19115) 44 | Collection getPolygons(); 45 | } 46 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/extent/GeographicDescription.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.extent; 19 | 20 | import org.opengis.metadata.Identifier; 21 | import org.opengis.annotation.UML; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Description of the geographic area using identifiers. 29 | * Geographic identifiers are described in ISO 19112. 30 | * 31 | * @author Martin Desruisseaux (IRD) 32 | * @version 3.0 33 | * @since 1.0 34 | */ 35 | @UML(identifier="EX_GeographicDescription", specification=ISO_19115) 36 | public interface GeographicDescription extends GeographicExtent { 37 | /** 38 | * The identifier used to represent a geographic area. 39 | * 40 | * @return the identifier used to represent a geographic area. 41 | */ 42 | @UML(identifier="geographicIdentifier", obligation=MANDATORY, specification=ISO_19115) 43 | Identifier getGeographicIdentifier(); 44 | } 45 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/extent/TemporalExtent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.extent; 19 | 20 | import org.opengis.annotation.UML; 21 | import org.opengis.temporal.TemporalPrimitive; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Time period covered by the content of the resource. 29 | * 30 | * @author Martin Desruisseaux (IRD) 31 | * @version 3.1 32 | * @since 1.0 33 | */ 34 | @UML(identifier="EX_TemporalExtent", specification=ISO_19115) 35 | public interface TemporalExtent { 36 | /** 37 | * Period for the content of the resource. 38 | * Should be an instance of {@link org.opengis.temporal.Period}. 39 | * 40 | * @return the period for the content. 41 | */ 42 | @UML(identifier="extent", obligation=MANDATORY, specification=ISO_19115) 43 | TemporalPrimitive getExtent(); 44 | } 45 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/identification/Parameter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SV_Parameter replacement 5 | 6 | 22 | 23 | 24 |

SV_Parameter replacement

25 |

The SV_Parameter class defined in ISO 19115 is omitted for unifying parameter handling 26 | with the org.opengis.parameter package. 27 | The following table maps SV_Parameter properties to their replacements.

28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
Mapping from SV_Parameter properties to ParameterDescriptor properties
SV_Parameter ParameterDescriptor
name getName()
name.attributeType getValueClass()
direction getDirection()
description getDescription()
optionality getMinimumOccurs() > 0
repeatability getMaximumOccurs() > 1
39 | 40 | 41 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/AggregationDerivation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Aggregation or derivation evaluation method. 27 | * This method describes additional results produced by aggregating or deriving existing results 28 | * without carrying out a new data quality evaluation. Aggregation combines quality results from 29 | * data quality evaluations based on different data quality elements or different data quality scopes. 30 | * 31 | * @author Alexis Gaillard (Geomatys) 32 | * @author Martin Desruisseaux (Geomatys) 33 | * @version 3.1 34 | * @since 3.1 35 | */ 36 | @UML(identifier="DQ_AggregationDerivation", specification=ISO_19157) 37 | public interface AggregationDerivation extends EvaluationMethod { 38 | } 39 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/Completeness.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | import org.opengis.annotation.Classifier; 22 | import org.opengis.annotation.Stereotype; 23 | 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Presence and absence of features, their attributes and their relationships. 29 | * Instances should be one of the following subtypes: 30 | *
    31 | *
  • {@link CompletenessOmission}: excess data present in a data set;
  • 32 | *
  • {@link CompletenessCommission}: data absent from a data set.
  • 33 | *
34 | * 35 | * @author Martin Desruisseaux (IRD) 36 | * @author Alexis Gaillard (Geomatys) 37 | * @version 3.1 38 | * @since 2.0 39 | */ 40 | @Classifier(Stereotype.ABSTRACT) 41 | @UML(identifier="DQ_Completeness", specification=ISO_19157) 42 | public interface Completeness extends Element { 43 | } 44 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/Confidence.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Trustworthiness of a data quality result. 27 | * Quantitative figures for confidence can be obtained by statistical parameters 28 | * such as standard deviation or a confidence interval on a given confidence level. 29 | * 30 | * @author Alexis Gaillard (Geomatys) 31 | * @author Martin Desruisseaux (Geomatys) 32 | * @version 3.1 33 | * @since 3.1 34 | */ 35 | @UML(identifier="DQ_Confidence", specification=ISO_19157) 36 | public interface Confidence extends Metaquality { 37 | } 38 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/DataEvaluation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.Classifier; 21 | import org.opengis.annotation.Stereotype; 22 | import org.opengis.annotation.UML; 23 | 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Data evaluation method. 29 | * Data quality evaluation methods can be divided into two main classes: direct and indirect. 30 | * Direct evaluation methods determine data quality through the comparison of the data with reference information. 31 | * Indirect evaluation methods infer or estimate data quality using information on the data such as lineage. 32 | * Direct evaluation methods should be used in preference to indirect evaluations. 33 | * 34 | * @author Alexis Gaillard (Geomatys) 35 | * @author Martin Desruisseaux (Geomatys) 36 | * @version 3.1 37 | * @since 3.1 38 | */ 39 | @Classifier(Stereotype.ABSTRACT) 40 | @UML(identifier="DQ_DataEvaluation", specification=ISO_19157) 41 | public interface DataEvaluation extends EvaluationMethod { 42 | } 43 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/FullInspection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Test of every item in the population specified by the data quality scope. 27 | * Full inspection is most appropriate for small populations 28 | * or for tests that can be accomplished by automated means. 29 | * 30 | * @author Alexis Gaillard (Geomatys) 31 | * @author Martin Desruisseaux (Geomatys) 32 | * @version 3.1 33 | * 34 | * @see SampleBasedInspection 35 | * @see IndirectEvaluation 36 | * 37 | * @since 3.1 38 | */ 39 | @UML(identifier="DQ_FullInspection", specification=ISO_19157) 40 | public interface FullInspection extends DataEvaluation { 41 | } 42 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/Homogeneity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Expected or tested uniformity of the results obtained for a data quality evaluation. 27 | * Homogeneity consists in comparing the evaluation results of several segments of a global data set. 28 | * This comparison can be expressed using root mean square errors for example. 29 | * These tests are often conducted when data has been captured by different operators, 30 | * depending on the acquisition zone or the acquisition date. 31 | * 32 | * @author Alexis Gaillard (Geomatys) 33 | * @author Martin Desruisseaux (Geomatys) 34 | * @version 3.1 35 | * @since 3.1 36 | */ 37 | @UML(identifier="DQ_Homogeneity", specification=ISO_19157) 38 | public interface Homogeneity extends Metaquality { 39 | } 40 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/NonQuantitativeAttributeAccuracy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2007-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Accuracy of non-quantitative attributes. 27 | * 28 | * @author Martin Desruisseaux (IRD) 29 | * @author Cory Horner (Refractions Research) 30 | * @author Alexis Gaillard (Geomatys) 31 | * @version 3.1 32 | * @since 2.1 33 | * 34 | * @deprecated Renamed {@link NonQuantitativeAttributeCorrectness}. 35 | */ 36 | @Deprecated(since="3.1") 37 | @UML(identifier="DQ_NonQuantitativeAttributeAccuracy", specification=ISO_19115, version=2003) 38 | public interface NonQuantitativeAttributeAccuracy extends NonQuantitativeAttributeCorrectness { 39 | } 40 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/Representativity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Degree to which the sample used has produced a result which is representation of the data. 27 | * A statistical method based on sampling could be considered as reliable as a global method 28 | * when all the geographic zones and concerned time periods are covered and the population 29 | * is sufficiently large. It is not only the size of the sample which is crucial but also 30 | * how well it represents the actual state of the data. 31 | * 32 | * @author Alexis Gaillard (Geomatys) 33 | * @author Martin Desruisseaux (Geomatys) 34 | * @version 3.1 35 | * @since 3.1 36 | */ 37 | @UML(identifier="DQ_Representativity", specification=ISO_19157) 38 | public interface Representativity extends Metaquality { 39 | } 40 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/SourceReference.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2022-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | import org.opengis.metadata.citation.Citation; 22 | 23 | import static org.opengis.annotation.Obligation.*; 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Reference to the source of the data quality measure. 29 | * 30 | * @author Alexis Gaillard (Geomatys) 31 | * @author Martin Desruisseaux (Geomatys) 32 | * @version 3.1 33 | * @since 3.1 34 | */ 35 | @UML(identifier="DQM_SourceReference", specification=ISO_19157) 36 | public interface SourceReference { 37 | /** 38 | * References to the source. 39 | * 40 | * @return reference to the source. 41 | */ 42 | @UML(identifier="citation", obligation=MANDATORY, specification=ISO_19157) 43 | Citation getCitation(); 44 | } 45 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/TemporalAccuracy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.Classifier; 21 | import org.opengis.annotation.Stereotype; 22 | import org.opengis.annotation.UML; 23 | 24 | import static org.opengis.annotation.Specification.*; 25 | 26 | 27 | /** 28 | * Accuracy of the temporal attributes and temporal relationships of features. 29 | * 30 | * @author Martin Desruisseaux (IRD) 31 | * @author Alexis Gaillard (Geomatys) 32 | * @version 3.1 33 | * @since 2.0 34 | * 35 | * @deprecated Renamed {@link TemporalQuality}. 36 | */ 37 | @Deprecated(since="3.1") 38 | @Classifier(Stereotype.ABSTRACT) 39 | @UML(identifier="DQ_TemporalAccuracy", specification=ISO_19115, version=2003) 40 | public interface TemporalAccuracy extends TemporalQuality { 41 | } 42 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/TemporalValidity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Validity of data specified by the scope with respect to time. 27 | * 28 | *

Standardized values

29 | * In order to achieve well defined and comparable quality information, it is recommended to 30 | * report data quality using {@linkplain Measure quality measures} listed in ISO 19157 annex. 31 | * The temporal validity may be treated with the same data quality measures as for {@link DomainConsistency}. 32 | * 33 | * @author Martin Desruisseaux (IRD) 34 | * @author Alexis Gaillard (Geomatys) 35 | * @version 3.1 36 | * @since 2.0 37 | */ 38 | @UML(identifier="DQ_TemporalValidity", specification=ISO_19157) 39 | public interface TemporalValidity extends TemporalQuality, TemporalAccuracy { 40 | } 41 | -------------------------------------------------------------------------------- /geoapi/src/main/java/org/opengis/metadata/quality/Usability.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.metadata.quality; 19 | 20 | import org.opengis.annotation.UML; 21 | 22 | import static org.opengis.annotation.Specification.*; 23 | 24 | 25 | /** 26 | * Degree of adherence of a dataset to a specific set of user requirements. 27 | * 28 | * @author Cédric Briançon (Geomatys) 29 | * @version 3.1 30 | * @since 2.3 31 | * 32 | * @deprecated Removed from latest ISO 19157 standard. 33 | */ 34 | @Deprecated(since="3.1") 35 | @UML(identifier="QE_Usability", specification=ISO_19115_2, version=2009) 36 | public interface Usability extends Element { 37 | } 38 | -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/geometry/overview.md: -------------------------------------------------------------------------------- 1 | # Geometry Subpackage (ISO 19107) 2 | ::: opengis.geometry 3 | -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/geometry/primitive.md: -------------------------------------------------------------------------------- 1 | # `primitive` module 2 | ::: opengis.geometry.primitive -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/index.md: -------------------------------------------------------------------------------- 1 | # GeoAPI for Python 2 | 3 | ***WARNING:*** **This specification is not final and is subject to change.** 4 | 5 | Experimental set of Python interfaces for GeoAPI. 6 | This package provides only code lists and abstract classes; implementations can be provided by separated projects. 7 | Implementations in the Java language can also be used in Python using the ``geoapi-java-python`` module. 8 | 9 | ## Requirements 10 | This package requires Python 3.10 or later -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/acquisition.md: -------------------------------------------------------------------------------- 1 | # `acquisition` module 2 | ::: opengis.metadata.acquisition -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/base.md: -------------------------------------------------------------------------------- 1 | # `base` module 2 | ::: opengis.metadata.base -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/citation.md: -------------------------------------------------------------------------------- 1 | # `citation` module 2 | ::: opengis.metadata.citation -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/constraints.md: -------------------------------------------------------------------------------- 1 | # `constraints` module 2 | ::: opengis.metadata.constraints -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/content.md: -------------------------------------------------------------------------------- 1 | # `content` module 2 | ::: opengis.metadata.content -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/distribution.md: -------------------------------------------------------------------------------- 1 | # `distribution` module 2 | ::: opengis.metadata.distribution -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/extension.md: -------------------------------------------------------------------------------- 1 | # `extension` module 2 | ::: opengis.metadata.extension -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/extent.md: -------------------------------------------------------------------------------- 1 | # `extent` module 2 | ::: opengis.metadata.extent -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/identification.md: -------------------------------------------------------------------------------- 1 | # `identification` module 2 | ::: opengis.metadata.identification -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/lineage.md: -------------------------------------------------------------------------------- 1 | # `lineage` module 2 | ::: opengis.metadata.lineage -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/maintenance.md: -------------------------------------------------------------------------------- 1 | # `maintenance` module 2 | ::: opengis.metadata.maintenance -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/naming.md: -------------------------------------------------------------------------------- 1 | # `naming` module 2 | ::: opengis.metadata.naming -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/overview.md: -------------------------------------------------------------------------------- 1 | # Naming (ISO 19103) and Metadata Subpackage (ISO 19115-1:2014, ISO 19115-2:2018) 2 | ::: opengis.metadata -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/quality.md: -------------------------------------------------------------------------------- 1 | # `quality` module 2 | ::: opengis.metadata.quality -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/representation.md: -------------------------------------------------------------------------------- 1 | # `representation` module 2 | ::: opengis.metadata.representation -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/metadata/service.md: -------------------------------------------------------------------------------- 1 | # `service` module 2 | ::: opengis.metadata.service -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/common.md: -------------------------------------------------------------------------------- 1 | # `common`module 2 | :::opengis.referencing.common -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/coordinate.md: -------------------------------------------------------------------------------- 1 | # `coordinate` module 2 | :::opengis.referencing.coordinate -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/crs.md: -------------------------------------------------------------------------------- 1 | # `crs` module 2 | :::opengis.referencing.crs -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/cs.md: -------------------------------------------------------------------------------- 1 | # `cs` module 2 | :::opengis.referencing.cs -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/datum.md: -------------------------------------------------------------------------------- 1 | # `datum` module 2 | :::opengis.referencing.datum -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/operation.md: -------------------------------------------------------------------------------- 1 | # `operation` module 2 | :::opengis.referencing.operation -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/referencing/overview.md: -------------------------------------------------------------------------------- 1 | # Referencing Subpackage (ISO 19111) 2 | ::: opengis.referencing 3 | -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/util/measure.md: -------------------------------------------------------------------------------- 1 | # `measure` module 2 | ::: opengis.util.measure -------------------------------------------------------------------------------- /geoapi/src/main/python/docs/util/overview.md: -------------------------------------------------------------------------------- 1 | # Referencing Subpackage (ISO 19103:2015) 2 | ::: opengis.util 3 | -------------------------------------------------------------------------------- /geoapi/src/main/python/mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: GeoAPI for Python 2 | site_url: https://www.geoapi.org/python/ 3 | 4 | theme: 5 | name: material 6 | 7 | plugins: 8 | - search 9 | - mkdocstrings 10 | 11 | nav: 12 | - GeoAPI Docs: index.md 13 | - Geometry (ISO 19107): 14 | - Overview: geometry/overview.md 15 | - primitive: geometry/primitive.md 16 | - Naming (ISO 19103) and Metadata (ISO 19115): 17 | - Overview: metadata/overview.md 18 | - acquisition: metadata/acquisition.md 19 | - base: metadata/base.md 20 | - citation: metadata/citation.md 21 | - constraints: metadata/constraints.md 22 | - content: metadata/content.md 23 | - distribution: metadata/distribution.md 24 | - extension: metadata/extension.md 25 | - extent: metadata/extent.md 26 | - identification: metadata/identification.md 27 | - lineage: metadata/lineage.md 28 | - maintenance: metadata/maintenance.md 29 | - naming: metadata/naming.md 30 | - quality: metadata/quality.md 31 | - representation: metadata/representation.md 32 | - service: metadata/service.md 33 | - Referencing (ISO 19111): 34 | - Overview: referencing/overview.md 35 | - common: referencing/common.md 36 | - coordinate: referencing/coordinate.md 37 | - crs: referencing/crs.md 38 | - cs: referencing/cs.md 39 | - datum: referencing/datum.md 40 | - operation: referencing/operation.md 41 | - Util: 42 | - Overview: util/overview.md 43 | - measure (ISO 19103): util/measure.md -------------------------------------------------------------------------------- /geoapi/src/main/python/opengis/__init__.py: -------------------------------------------------------------------------------- 1 | # ===-----------------------------------------------------------------------=== 2 | # GeoAPI - Python interfaces (abstractions) for OGC/ISO standards 3 | # Copyright © 2013-2024 Open Geospatial Consortium, Inc. 4 | # http: //www.geoapi.org 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http: //www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # ===-----------------------------------------------------------------------=== 18 | """This is the GeoAPI (`opengis`) package. 19 | 20 | This package implements the Open Geospatial Consortium, Inc.'s GeoAPI (geoapi) 21 | specification in Python and contains geographic structures derived from various 22 | OGC/ISO international standards. 23 | """ 24 | 25 | __package_name__ = "opengis" 26 | __version__ = "4.0a1" 27 | __author__ = "Martin Desruisseaux (Geomatys), David Meaux (Geomatys)" 28 | __license_type__ = "© 2013-2024 Open Geospatial Consortium, Inc.\ 29 | Licensed under the Apache License, Version 2.0." 30 | -------------------------------------------------------------------------------- /geoapi/src/main/python/opengis/geometry/__init__.py: -------------------------------------------------------------------------------- 1 | # ===-----------------------------------------------------------------------=== 2 | # GeoAPI - Python interfaces (abstractions) for OGC/ISO standards 3 | # Copyright © 2013-2024 Open Geospatial Consortium, Inc. 4 | # http: //www.geoapi.org 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http: //www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # ===-----------------------------------------------------------------------=== 18 | """This is the `geometry` subpackage. 19 | 20 | This subpackage contains geometry data structures derived from the 21 | ISO 19107 international standard. 22 | """ 23 | 24 | __author__ = "OGC Topic 1 (for abstract model and documentation), " +\ 25 | "Martin Desruisseaux (Geomatys), David Meaux (Geomatys)" 26 | -------------------------------------------------------------------------------- /geoapi/src/main/python/opengis/metadata/__init__.py: -------------------------------------------------------------------------------- 1 | # ===-----------------------------------------------------------------------=== 2 | # GeoAPI - Python interfaces (abstractions) for OGC/ISO standards 3 | # Copyright © 2013-2024 Open Geospatial Consortium, Inc. 4 | # http: //www.geoapi.org 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http: //www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # ===-----------------------------------------------------------------------=== 18 | """This is the `metadata` subpackage. 19 | 20 | This subpackage contains geographic naming structures derived from the 21 | ISO 19103 international standard and metadata structures derived from the 22 | ISO 19115-1:2014, including addendums A1(2018) and A2(2020), 23 | and ISO 19115-2:2019, including addendum A1(2022) international standards. 24 | """ 25 | 26 | __author__ = "OGC Topic 11 (for abstract model and documentation), " +\ 27 | "Martin Desruisseaux (Geomatys), David Meaux (Geomatys)" 28 | -------------------------------------------------------------------------------- /geoapi/src/main/python/opengis/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/geoapi/src/main/python/opengis/py.typed -------------------------------------------------------------------------------- /geoapi/src/main/python/opengis/referencing/__init__.py: -------------------------------------------------------------------------------- 1 | # ===-----------------------------------------------------------------------=== 2 | # GeoAPI - Python interfaces (abstractions) for OGC/ISO standards 3 | # Copyright © 2013-2024 Open Geospatial Consortium, Inc. 4 | # http: //www.geoapi.org 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http: //www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # ===-----------------------------------------------------------------------=== 18 | """This is the `referencing` subpackage. 19 | 20 | This subpackage contains spatial referencing data structures derived from 21 | the ISO 19111 international standard. 22 | """ 23 | 24 | __author__ = "OGC Topic 2 (for abstract model and documentation), " +\ 25 | "Martin Desruisseaux (Geomatys), David Meaux (Geomatys)" 26 | -------------------------------------------------------------------------------- /geoapi/src/main/python/opengis/util/__init__.py: -------------------------------------------------------------------------------- 1 | # ===-----------------------------------------------------------------------=== 2 | # GeoAPI - Python interfaces (abstractions) for OGC/ISO standards 3 | # Copyright © 2013-2024 Open Geospatial Consortium, Inc. 4 | # http: //www.geoapi.org 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http: //www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # ===-----------------------------------------------------------------------=== 18 | """This is the `util` subpackage. 19 | 20 | This subpackage contains types defined in the ISO 19103:2015 specification 21 | for which no equivalence is already present in the Python standard library. 22 | """ 23 | 24 | __author__ = "OGC Topic 20 (for abstract model and documentation), " +\ 25 | "David Meaux (Geomatys)" 26 | -------------------------------------------------------------------------------- /geoapi/src/main/python/requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs 2 | mkdocstrings-python 3 | mkdocs-material 4 | -------------------------------------------------------------------------------- /geoapi/src/main/resources/org/opengis/metadata/2003/charset-codes.properties: -------------------------------------------------------------------------------- 1 | # From ISO 19115:2003 to java.nio.charset 2 | ucs2=UCS-2 3 | ucs4=UCS-4 4 | utf7=UTF-7 5 | utf8=UTF-8 6 | utf16=UTF-16 7 | 8859part1=ISO-8859-1 8 | 8859part2=ISO-8859-2 9 | 8859part3=ISO-8859-3 10 | 8859part4=ISO-8859-4 11 | 8859part5=ISO-8859-5 12 | 8859part6=ISO-8859-6 13 | 8859part7=ISO-8859-7 14 | 8859part8=ISO-8859-8 15 | 8859part9=ISO-8859-9 16 | 8859part10=ISO-8859-10 17 | 8859part11=ISO-8859-11 18 | 8859part12=ISO-8859-12 19 | 8859part13=ISO-8859-13 20 | 8859part14=ISO-8859-14 21 | 8859part15=ISO-8859-15 22 | 8859part16=ISO-8859-16 23 | jis=JIS_X0201 24 | shiftJIS=Shift_JIS 25 | eucJP=EUC-JP 26 | usAscii=US-ASCII 27 | ebcdic=EBCDIC 28 | eucKR=EUC-KR 29 | big5=Big5 30 | GB2312=GB2312 31 | -------------------------------------------------------------------------------- /geoapi/src/main/resources/org/opengis/metadata/CodeLists_en.properties: -------------------------------------------------------------------------------- 1 | # Inherit all resources from CodeLists.properties 2 | -------------------------------------------------------------------------------- /geoapi/src/main/resources/org/opengis/metadata/Descriptions_en.properties: -------------------------------------------------------------------------------- 1 | # Inherit all resources from Descriptions.properties 2 | -------------------------------------------------------------------------------- /geoapi/src/main/resources/org/opengis/metadata/Descriptions_en_US.properties: -------------------------------------------------------------------------------- 1 | # Inherit resources from Descriptions.properties 2 | MD_Band.detectedPolarisation=Polarization of the radiation detected. 3 | MD_Band.transmittedPolarisation=Polarization of the radiation transmitted. 4 | -------------------------------------------------------------------------------- /geoapi/src/pending/java/org/opengis/geometry/Geometry.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry; 19 | 20 | 21 | /** 22 | * Temporary placeholder for an interface defined in the geoapi-pending module. 23 | */ 24 | public interface Geometry { 25 | } 26 | -------------------------------------------------------------------------------- /geoapi/src/pending/java/org/opengis/geometry/primitive/Point.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2003-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geometry.primitive; 19 | 20 | import org.opengis.geometry.Geometry; 21 | 22 | 23 | /** 24 | * Temporary placeholder for an interface defined in the geoapi-pending module. 25 | */ 26 | public interface Point extends Geometry { 27 | } 28 | -------------------------------------------------------------------------------- /geoapi/src/pending/java/org/opengis/geometry/primitive/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2021-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Set of geometric objects that are not decomposed further into other primitives. 21 | * The content of this package will be developed in a future GeoAPI release. 22 | * 23 | * @version 3.1 24 | * @since 1.0 25 | */ 26 | package org.opengis.geometry.primitive; 27 | -------------------------------------------------------------------------------- /geoapi/src/shared/README.md: -------------------------------------------------------------------------------- 1 | Files in this directory are shared by two modules: 2 | 3 | * geoapi/test 4 | * geoapi-conformance/main 5 | 6 | Conceptually those files are part of `geoapi-conformance`. 7 | But they are needed for testing the `geoapi` module, which 8 | cannot be done without introducing a circular dependency. 9 | This `shared` directory make easier to provide a copy of 10 | those files to `geoapi/test` 11 | -------------------------------------------------------------------------------- /geoapi/src/shared/java/org/opengis/geoapi/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2018-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Information about GeoAPI content, made available for test suites. 21 | * The information are either hard-coded (e.g. list of all interfaces) 22 | * or read from OGC XML schema. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @version 3.1 26 | * @since 3.1 27 | */ 28 | package org.opengis.geoapi; 29 | -------------------------------------------------------------------------------- /geoapi/src/shared/java/org/opengis/geoapi/schema/SchemaException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.geoapi.schema; 19 | 20 | 21 | /** 22 | * Thrown when a {@link SchemaInformation} failed to load a XSD file because it does not comply 23 | * with expected OGC/ISO conventions, or when a UML annotation failed a compliance check. 24 | * 25 | * @author Martin Desruisseaux (Geomatys) 26 | * @since 3.1 27 | * @version 3.1 28 | */ 29 | public class SchemaException extends Exception { 30 | /** 31 | * Serial number for inter-operability with different versions. 32 | */ 33 | private static final long serialVersionUID = -4421595503088915919L; 34 | 35 | /** 36 | * Creates an exception with the specified details message. 37 | * 38 | * @param message the detail message. 39 | */ 40 | public SchemaException(final String message) { 41 | super(message); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /geoapi/src/shared/java/org/opengis/geoapi/schema/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2018-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Tools for comparing Java API against XML schema. 21 | * This is used for verifying if GeoAPI itself follows OGC/ISO standards as expected, 22 | * and for documenting the departures. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @version 3.1 26 | * @since 3.1 27 | */ 28 | package org.opengis.geoapi.schema; 29 | -------------------------------------------------------------------------------- /geoapi/src/test/java/org/opengis/filter/FilterNameTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.filter; 19 | 20 | import org.junit.jupiter.api.Test; 21 | import static org.junit.jupiter.api.Assertions.*; 22 | 23 | 24 | /** 25 | * Tests the {@link FilterName} default implementation. 26 | * 27 | * @author Martin Desruisseaux (Geomatys) 28 | * @version 3.1 29 | * @since 3.1 30 | */ 31 | public final class FilterNameTest { 32 | /** 33 | * Creates a new test case. 34 | */ 35 | public FilterNameTest() { 36 | } 37 | 38 | /** 39 | * Tests {@link FilterName#values()} 40 | */ 41 | @Test 42 | public void testValues() { 43 | assertArrayEquals(FilterName.values(), new FilterName[] { 44 | FilterName.RESOURCE_ID, 45 | FilterName.INCLUDE, 46 | FilterName.EXCLUDE 47 | }); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /geoapi/src/test/java/org/opengis/referencing/operation/MatrixTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2023-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.referencing.operation; 19 | 20 | import org.junit.jupiter.api.Test; 21 | import static org.junit.jupiter.api.Assertions.*; 22 | 23 | 24 | /** 25 | * Tests {@link Matrix} 26 | * 27 | * @author Martin Desruisseaux (Geomatys) 28 | * @version 3.1 29 | * @since 3.1 30 | */ 31 | public final class MatrixTest { 32 | /** 33 | * Creates a new test case. 34 | */ 35 | public MatrixTest() { 36 | } 37 | 38 | /** 39 | * Tests {@link Matrix#isIdentity()}. 40 | */ 41 | @Test 42 | public void testIdentity() { 43 | assertFalse(new MatrixMock(2, 1, 0).isIdentity()); 44 | assertTrue (new MatrixMock(3, 1, 0).isIdentity()); 45 | assertFalse(new MatrixMock(3, 0, 0).isIdentity()); 46 | assertFalse(new MatrixMock(3, 1, 1).isIdentity()); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /geoapi/src/test/java/org/opengis/util/CodeListTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2004-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.util; 19 | 20 | import org.junit.jupiter.api.Test; 21 | 22 | import static org.junit.jupiter.api.Assertions.*; 23 | 24 | 25 | /** 26 | * Tests {@link CodeList}. 27 | * 28 | * @author Martin Desruisseaux (Geomatys) 29 | * @version 3.1 30 | * @since 3.1 31 | */ 32 | public final class CodeListTest { 33 | /** 34 | * Creates a new test case. 35 | */ 36 | public CodeListTest() { 37 | } 38 | 39 | /** 40 | * Tests {@link CodeList#toComparableName(String)}. 41 | */ 42 | @Test 43 | public void testToComparableName() { 44 | String identifier = "test"; 45 | assertSame (identifier, CodeList.toComparableName(identifier)); 46 | assertEquals(identifier, CodeList.toComparableName(" te-st ")); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ogcmetanorma.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": { 3 | "OGC_doc_number": "23-016", 4 | "urn":"http://www.opengis.net/doc/IS/geoapi/4.0", 5 | "title":"OGC GeoAPI", 6 | "version":"4.0.0", 7 | "path":"src/main/metanorma/standard.adoc" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | Root directory of the GeoAPI specification and of files that apply to all modules. 2 | For building the project, see the [tools](../tools) directory. 3 | -------------------------------------------------------------------------------- /src/main/javadoc/README.md: -------------------------------------------------------------------------------- 1 | The content of this directory is either referenced by some options given to `javadoc`, 2 | or copied as additional resource files after the Javadoc has been generated. 3 | 4 | * [Script for generating the Javadoc](https://github.com/opengeospatial/geoapi/blob/master/tools/src/main/bash/generate-javadoc.sh) 5 | * [Doclet source code](https://github.com/opengeospatial/geoapi/blob/master/tools/src/main/java/org/opengis/tools/doclet/FlushableDoclet.java) 6 | -------------------------------------------------------------------------------- /src/main/javadoc/content.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Stylesheet for the content.html file. 3 | */ 4 | caption { 5 | color: darkblue; 6 | font-weight: bold; 7 | font-size: large; 8 | margin-top: 40px; 9 | margin-bottom: 9px; 10 | } 11 | 12 | table { 13 | width: auto; 14 | border: none; 15 | border-spacing: 0; 16 | padding: 0; 17 | text-align: left; 18 | white-space: nowrap; 19 | } 20 | 21 | table tr th { 22 | padding: 3px 9px; 23 | } 24 | 25 | table tr td { 26 | padding: 0 9px; 27 | vertical-align: text-top; 28 | } 29 | 30 | .separator { 31 | padding: 0; 32 | } 33 | 34 | .header { 35 | background: lightgray; 36 | } 37 | 38 | .package { 39 | color: white; 40 | background: darkblue; 41 | font-size: 110%; 42 | } 43 | 44 | .type { 45 | font-weight: bold; 46 | } 47 | 48 | .member { 49 | padding: 0 9px 0 21px; 50 | } 51 | 52 | .spec { 53 | font-size: smaller; 54 | } 55 | 56 | .new { 57 | color: cadetblue; 58 | text-align: center; 59 | } 60 | 61 | .incompatible { 62 | color: red; 63 | text-align: center; 64 | } 65 | 66 | .warning { 67 | color: darkgoldenrod; 68 | text-align: center; 69 | } 70 | 71 | .new a, .incompatible a, .warning a { 72 | text-decoration: none; 73 | color: currentColor; 74 | } 75 | -------------------------------------------------------------------------------- /src/main/javadoc/departure.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Stylesheet for the departures.html file. 3 | */ 4 | section.categories { 5 | } 6 | 7 | section.types { 8 | margin-left: 30px; 9 | } 10 | 11 | section.members { 12 | margin-left: 30px; 13 | } 14 | 15 | div.desc { 16 | margin-left: 30px; 17 | margin-right: 40px; 18 | margin-top: 9px; 19 | margin-bottom: 9px; 20 | text-align: justify; 21 | } 22 | 23 | h2 { 24 | margin-top: 60px; 25 | } 26 | 27 | h2, h3, h4 { 28 | margin-bottom: 9px; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/javadoc/overview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | GeoAPI 6 | 7 | 8 | Java interfaces derived from OGC and ISO abstract models. 9 | In a series of packages and modules in the org.opengis® namespace, 10 | GeoAPI defines interfaces for metadata handling, for geodetic referencing (map projections), 11 | for the representation of features and for their filtering. 12 | The GeoAPI interfaces closely follow the abstract models published collaboratively by the 13 | International Organization for Standardization (ISO) 14 | in its 19100 series of documents and the 15 | Open Geospatial Consortium (OGC) 16 | in its abstract and implementation specifications. 17 | The normative part of GeoAPI is the org.opengis.geoapi module, 18 | Other modules are conformance tests or examples. 19 | See the GeoAPI home page for more information. 20 | 21 |

Requirements: 22 | This version of GeoAPI requires Java 11 or later and the 23 | JSR-385 units of measurement API. 24 |

25 | 26 | 27 | -------------------------------------------------------------------------------- /src/main/javadoc/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/src/main/javadoc/warning.png -------------------------------------------------------------------------------- /src/main/metanorma/.gitignore: -------------------------------------------------------------------------------- 1 | # Metanorma generated output 2 | _files 3 | iev 4 | relaton 5 | document.err 6 | document.pdf 7 | document.html 8 | document.xml.abort 9 | document.presentation.xml 10 | document_* 11 | -------------------------------------------------------------------------------- /src/main/metanorma/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "metanorma-cli" 4 | gem "relaton-cli" 5 | -------------------------------------------------------------------------------- /src/main/metanorma/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Builds GeoAPI specification with Metanorma in a Linux environment. 4 | # This script assumes that the `metanorma` command-line is available 5 | # on the path. See https://www.metanorma.org/install/linux/ 6 | # 7 | # The main purpose of this script is to write the output in the target 8 | # directory for avoiding to pollute the source directory. 9 | # 10 | 11 | # Stop the script on first error. 12 | set -o errexit 13 | 14 | SOURCE_DIR="`dirname $0`" 15 | SOURCE_DIR="`realpath $SOURCE_DIR`" 16 | TARGET_DIR="`realpath $SOURCE_DIR/../../../target`" 17 | mkdir --parents --verbose $TARGET_DIR 18 | 19 | metanorma compile --output-dir "$TARGET_DIR" --agree-to-terms --type ogc --extensions html standard.adoc 20 | 21 | # Following directory is empty after a successful build. 22 | rmdir _files 23 | -------------------------------------------------------------------------------- /src/main/metanorma/code/java/JNDI.adoc: -------------------------------------------------------------------------------- 1 | [[JNDI]] 2 | ==== Names in JNDI context 3 | 4 | The ISO 19103:2015 name types (<>) define mapping methods from a name to the object identified by that name. 5 | But the mapping methods defined by ISO 19103:2015 are not part of the `Name­Space` interface defined by GeoAPI. 6 | Instead, GeoAPI leaves that functionality to frameworks such as the Java Naming and Directory Interface™ (JNDI). 7 | Java applications which need such mapping may use the methods in the `javax​.naming​.Context` interface: 8 | 9 | .Java Naming and Directory Interface equivalences 10 | [.compact, options="header"] 11 | |======================================================================================= 12 | |ISO 19103:2015 `NameSpace` member |`org.opengis.util.NameSpace` |`javax.naming.Context` 13 | |`isGlobal` |`isGlobal()` | 14 | |`acceptableClassList` | | 15 | |`generateID(Any)` | | 16 | |`locate(LocalName)` | |`lookup(Name)` 17 | |`name` |`name()` |`getNameInNamespace()` 18 | |`registerID(LocalName, Any)` | |`bind(Name, Object)` 19 | |`select(GenericName)` | |`lookup(Name)` 20 | |`unregisterID(LocalName, Any)` | |`unbind(Name)` 21 | |======================================================================================= 22 | -------------------------------------------------------------------------------- /src/main/metanorma/code/java/code_list.adoc: -------------------------------------------------------------------------------- 1 | [[java_code_list]] 2 | ==== Code list at runtime 3 | 4 | Controlled vocabularies (<>) can take the form of enumerations or code lists. 5 | These two types are implemented by `java​.lang​.Enum` and `org​.opengis​.util​.Code­List` respectively. 6 | The use of `Code­List` classes includes accessing statically defined elements, 7 | defining new elements and retrieving any element defined for the code list. 8 | Considering, for example, `org​.opengis​.referencing​.cs​.Axis­Direction`, 9 | the following codes could be used: 10 | 11 | [source,java] 12 | --------------------------------------------------------------------------------------------- 13 | AxisDirection north; 14 | north = AxisDirection.NORTH; // Compile-time value (safest). 15 | north = AxisDirection.valueOf("NORTH"); // Runtime value (more dynamic). 16 | north = CodeList.valueOf(AxisDirection.class, "NORTH"); // Runtime type and value. 17 | --------------------------------------------------------------------------------------------- 18 | 19 | where the `.valueOf(…)` form above will create a new value if it does not exist. 20 | Special care should be taken to keep such calls consistent throughout the code 21 | since the `Code­List` will create a new element if there are any difference in the `String` parameters. 22 | The list of all elements (including new elements created by `valueOf(…)`) can be obtained as below: 23 | 24 | [source,java] 25 | -------------------------------------------------- 26 | AxisDirection[] elements = AxisDirection.values(); 27 | -------------------------------------------------- 28 | -------------------------------------------------------------------------------- /src/main/metanorma/code/java/internationalization.adoc: -------------------------------------------------------------------------------- 1 | [[InternationalString]] 2 | ==== Multilingual string 3 | 4 | Internationalization (<>) is handled using objects provided by the standard Java library 5 | such as `java​.util​.Locale`, with the addition of one GeoAPI interface. 6 | The `org​.opengis​.util​.International­String` interface provides a container for multiple versions of the same text, 7 | each for a specific `Locale` — the identifier used in Java for a specific language, possibly in a named territory. 8 | 9 | [source,java] 10 | ---------------------------------------------------------------------------- 11 | NameFactory factory = ... // Implementation dependent. 12 | InternationalString multiLingual = factory.createInternationalString(Map.of( 13 | Locale.ENGLISH, "My documents", 14 | Locale.FRENCH, "Mes documents")); 15 | 16 | System.out.println(localized); // Language at implementation choice. 17 | System.out.println(localized.toString(Locale.FRENCH)); 18 | ---------------------------------------------------------------------------- 19 | 20 | The method to obtain factories is not specified by this standard and therefore depends on the design of the library implementation. 21 | Also, the locale used by default depends on the choice of the implementation so the result of the call `toString()` 22 | without parameters will depend on the implementation. 23 | -------------------------------------------------------------------------------- /src/main/metanorma/code/java/metadata.adoc: -------------------------------------------------------------------------------- 1 | [[java_metadata]] 2 | ==== Metadata 3 | 4 | The interfaces in the GeoAPI metadata packages (<>) are primarily containers of primitive types and other metadata types. 5 | Metadata elements will be encountered for example from interfaces in the referencing packages. 6 | The metadata interfaces enable users to decompose a given element into smaller elements. 7 | As an example, the following code prints a list of all individuals (ignoring organizations) 8 | for a document starting with a `Citation` element: 9 | 10 | [source,java] 11 | --------------------------------------------------------------------------- 12 | Citation citation = ...; // We assume this instance is already available 13 | 14 | for (Responsibility rp : citation.getCitedResponsibleParties()) { 15 | if (rp.getRole() == Role.AUTHOR) { 16 | for (Party party : rp.getParties()) { 17 | if (party instanceof Individual) { 18 | InternationalString author = rp.getName(); 19 | System.out.println(author); 20 | } 21 | } 22 | } 23 | } 24 | --------------------------------------------------------------------------- 25 | 26 | The remainder of the metadata packages work in similar ways, 27 | where client code must decompose an instance to obtain the elements needed. 28 | 29 | 30 | ===== Write operations 31 | The GeoAPI metadata interfaces provide no methods to set the values of the types. 32 | Furthermore, because the way that wildcards for Java Generics have been used in the interfaces, 33 | the collection instances are constrained to be read only. 34 | Implementers are free to provide a fully mutable implementation of GeoAPI interfaces, 35 | but users may need to cast to the implementation classes in order to modify a metadata. 36 | -------------------------------------------------------------------------------- /src/main/metanorma/figures/derivatives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opengeospatial/geoapi/04262b65da0f14d219e6b7f2876c456a07cdb272/src/main/metanorma/figures/derivatives.png -------------------------------------------------------------------------------- /src/main/metanorma/geoapi.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This stylesheet is applied in addition to the standard.css; 3 | * it does not replace it. We need to declare in this file only 4 | * the elements that we want to overwrite. 5 | */ 6 | 7 | p:not(.NormRef):not(.Biblio):not(div.formula *) { 8 | text-align: justify; 9 | } 10 | 11 | li { 12 | text-align: justify; 13 | } 14 | 15 | div.figure, div.formula { 16 | background-color: inherit; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/metanorma/metanorma.yml: -------------------------------------------------------------------------------- 1 | --- 2 | metanorma: 3 | source: 4 | files: 5 | - standard.adoc 6 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/README.md: -------------------------------------------------------------------------------- 1 | # Requirements 2 | 3 | This folder contains requirements description. 4 | Each file is a single requirement. 5 | The naming convention for these files is: 6 | `REQn.adoc` where _n_ corresponds to the requirement number. 7 | Numbers should have preceding zeros appropriate for the total number of requirements in the project. 8 | 9 | The requirement files are integrated into the main document as links. 10 | For each requirement, there should be a corresponding Abstract Test in the "abstract_tests" folder. 11 | Sample code may reference one or more requirements and should state which requirements are included 12 | in the code by adding the following line to the Extended Description: 13 | 14 | ``` 15 | #REQS: reqnum1,reqnum2,...reqnumn 16 | ``` 17 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/class_app.adoc: -------------------------------------------------------------------------------- 1 | [cols="1,4",width="90%",options="unnumbered"] 2 | |=== 3 | 2+|*Requirements Class: Application* {set:cellbgcolor:#CACCCE} 4 | 2+|http://www.opengis.net/spec/ABCD/m.n/req/req-class-app {set:cellbgcolor:#FFFFFF} 5 | |Target type | Application 6 | |Dependency | 7 | |*Requirement 1* {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/ABCD/m.n/req/req-class-app/req-authority + 8 | Conformance with authority definitions {set:cellbgcolor:#FFFFFF} 9 | {set:cellbgcolor:#FFFFFF} 10 | |*Requirement 2* {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/ABCD/m.n/req/req-class-app/req-wkt + 11 | Conformance with WKT syntax {set:cellbgcolor:#FFFFFF} 12 | {set:cellbgcolor:#FFFFFF} 13 | |=== 14 | 15 | #TODO: Describe requirements.# 16 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/req_behavior.adoc: -------------------------------------------------------------------------------- 1 | [[req_behavior]] 2 | [requirement] 3 | ==== 4 | [%metadata] 5 | label:: /req/req-class-lib/req-behavior 6 | [.component,class=conditions] 7 | -- 8 | . Implementations shall follow the dictates of the Java or Python API documentation. 9 | -- 10 | 11 | [.component,class=part] 12 | -- 13 | Libraries which provide code implementations of the GeoAPI interfaces shall follow 14 | the dictates of the Java or Python API documentation. 15 | -- 16 | ==== 17 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/req_factory_methods.adoc: -------------------------------------------------------------------------------- 1 | [[req_factory_methods]] 2 | [requirement] 3 | ==== 4 | [%metadata] 5 | label:: /req/req-class-lib/req-factory-methods 6 | [.component,class=conditions] 7 | -- 8 | . Factory methods shall return object or throw the documented exception. 9 | -- 10 | 11 | [.component,class=part] 12 | -- 13 | Methods which create new instances, such as `Factory` methods, 14 | shall return the desired value or throw the exception documented in the API, 15 | such as `Factory­Exception` or a sub-type. 16 | Returning `null` is not allowed. 17 | -- 18 | ==== 19 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/req_getters.adoc: -------------------------------------------------------------------------------- 1 | [[req_getters]] 2 | [requirement] 3 | ==== 4 | [%metadata] 5 | label:: /req/req-class-lib/req-getters 6 | [.component,class=conditions] 7 | -- 8 | . Optional getter methods should return the value, or `null` or `None`. 9 | . Mandatory getter methods should return a non-null value or throw an exception. 10 | -- 11 | 12 | [.component,class=part] 13 | -- 14 | Optional getter methods should return the requested value unless the value 15 | is missing or the method is not implemented in which case they should return 16 | an empty collection if possible, or `null` or `None` otherwise. 17 | -- 18 | 19 | [.component,class=part] 20 | -- 21 | Unless otherwise specified in this specification or in the API documentation, 22 | mandatory getter methods should return the requested value unless the value 23 | is missing in which case they should throw an exception such as `Illegal­State­Exception`. 24 | -- 25 | 26 | [.component,class=part] 27 | -- 28 | As an exception to condition B, 29 | mandatory getter methods in the metadata packages are allowed to return `null` or `None` 30 | because of the extensive existence of incomplete metadata (<>). 31 | -- 32 | ==== 33 | 34 | "Getter" methods (methods which obtain a value from an object) 35 | are documented through annotations in the Javadoc as mandatory or optional. 36 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/req_implementation_discovery.adoc: -------------------------------------------------------------------------------- 1 | [[req_implementation_discovery]] 2 | [requirement] 3 | ==== 4 | [%metadata] 5 | label:: /req/req-class-lib/req-implementation_discovery 6 | [.component,class=conditions] 7 | -- 8 | . Java implementations of `RegisterOperations` (if any) shall be declared in `module-info`. 9 | -- 10 | 11 | [.component,class=part] 12 | -- 13 | If a Java implementation of `RegisterOperations` exists, 14 | it shall be declared in `module-info.java` like below 15 | (replace `my.implementation` by the actual class name): 16 | 17 | [source,java,options="unnumbered"] 18 | ---------------------------------------------------------------------------- 19 | provides org.opengis.referencing.RegisterOperations 20 | with my.implementation.classname 21 | ---------------------------------------------------------------------------- 22 | 23 | -- 24 | ==== 25 | -------------------------------------------------------------------------------- /src/main/metanorma/requirements/req_setters.adoc: -------------------------------------------------------------------------------- 1 | [[req_setters]] 2 | [requirement] 3 | ==== 4 | [%metadata] 5 | label:: /req/req-class-lib/req-setters 6 | [.component,class=conditions] 7 | -- 8 | . Setter methods shall either mutate the object or throw an exception. 9 | -- 10 | 11 | [.component,class=part] 12 | -- 13 | Methods which set the value of an object 14 | shall either succeed or throw an exception such as 15 | `UnsupportedOperationException` if the method is not implemented or if the object is unmodifiable, 16 | `IllegalArgumentException` if the value is illegal in that implementation, or 17 | `IllegalStateException` if some context makes the use of that method illegal. 18 | This list of exception types is not exclusive. 19 | -- 20 | ==== 21 | 22 | *Example:* 23 | A call to `parameter​.setValue(-10.25)` in Java 24 | may have the first of the following results which is applicable: 25 | 26 | * The method is supported and the -10.25 value is valid: 27 | The setter method returns silently. 28 | * The method is not implemented by the library: 29 | `Unsupported­Operation­Exception` is thrown. 30 | * Values for that parameter are restricted to positive numbers: 31 | `Illegal­Argument­Exception` is thrown. 32 | * The `Parameter­Value` instance has been declared unmodifiable: 33 | `Illegal­State­Exception` or `Unsupported­Operation­Exception` is thrown. 34 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/annex-bibliography.adoc: -------------------------------------------------------------------------------- 1 | [bibliography] 2 | [[bibliography]] 3 | == Bibliography 4 | 5 | Additional information and definitions were taken from the following sources. 6 | 7 | * [[[IOGP,EPSG]]], IOGP: _The EPSG Geodetic Parameter Dataset._ https://epsg.org/ 8 | 9 | * [[[JUnit,JUnit]]], JUnit team: _The Junit framework._ https://junit.org/ 10 | 11 | * [[[OGC03-064,OGC 03-064r10]]], Greg Reynolds: OGC 03-064r10, _Application Objects_ (2005) 12 | 13 | * [[[OGC07-092,OGC 07-092r1]]], Arliss Whiteside: OGC 07-092r1, _Definition identifier URNs in OGC namespace_ (2007) 14 | 15 | * [[[OGC16-019,OGC 16-019r4]]], George Percivall: OGC 16-019r4, _Open Geospatial APIs — White Paper_ 16 | 17 | * [[[OGC17-087,OGC 17-087r13]]], John R. Herring: OGC 17-087r13, _Features and geometry — Part 1: Feature models_ 18 | 19 | * [[[RFC4647,RFC 4647]]], IETF: _Matching of Language Tags_ 20 | 21 | * [[[UCUM,UCUM]]], UCUM: _The Unified Code for Units of Measure._ https://unitsofmeasure.org/ 22 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/annex-code.adoc: -------------------------------------------------------------------------------- 1 | [appendix] 2 | [[examples]] 3 | == Examples 4 | 5 | This appendix provides code snippets in the {supported-languages} programming languages 6 | for aspects discussed in the Geospatial API overview (<>). 7 | 8 | [[java_examples]] 9 | === Java examples 10 | 11 | This section provides code snippets in the Java programming languages 12 | for aspects discussed in the Geospatial API overview (<>). 13 | 14 | include::../code/java/annotation.adoc[] 15 | 16 | include::../code/java/code_list.adoc[] 17 | 18 | include::../code/java/JNDI.adoc[] 19 | 20 | include::../code/java/internationalization.adoc[] 21 | 22 | include::../code/java/parameterized_units.adoc[] 23 | 24 | include::../code/java/metadata.adoc[] 25 | 26 | include::../code/java/create_crs.adoc[] 27 | 28 | include::../code/java/coordinate_operation.adoc[] 29 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/clause_7_normative_text.adoc: -------------------------------------------------------------------------------- 1 | [[requirements]] 2 | == Requirements 3 | 4 | This specification defines requirements for two target types: _libraries_ and _applications_. 5 | A library is a software that exposes the `opengis` packages for use by independent parties. 6 | An application is a software that encapsulates the `opengis` packages for its internal working, 7 | but without exposing them to end users. 8 | Applications have less requirements than libraries. 9 | For example, compliant libraries shall obey to method signatures declared in published OGC interfaces, 10 | otherwise other developers could not base their developments on a common set of API. 11 | However, applications are free to modify, add or remove methods as they see fit. 12 | If the `opengis` API of the application is not invoked by any external user, 13 | then changes to that API has no impact on interoperability. 14 | 15 | 16 | [[requirements-application]] 17 | === Application requirements 18 | 19 | This section describes requirements for applications implementing GeoAPI. 20 | These requirements apply also to libraries (<>) 21 | since applications are built from libraries. 22 | 23 | include::../requirements/class_app.adoc[] 24 | 25 | 26 | [[requirements-library]] 27 | === Library requirements 28 | 29 | This section describes requirements for ensuring source compatibility or binary compatibility 30 | (when applicable) of libraries compliant with this specification. 31 | These requirements apply to the _libraries_ made available for use by other developers. 32 | The requirements usually do not apply to applications distributed to end users. 33 | 34 | include::../requirements/class_lib.adoc[] 35 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/collections.adoc: -------------------------------------------------------------------------------- 1 | [[collections]] 2 | ==== Collections 3 | _From <> §7.3.2.3_ 4 | 5 | GeoAPI implements multi-valued properties using the standard Collections Frameworks provided by {supported-languages}. 6 | If the property has the `isUnique` meta-property, then the collection is a `Set`: 7 | a finite collection of objects where each object appears only once in unspecified order. 8 | If the property has the `isOrdered` meta-property, then the collection is a `Sequence`: 9 | a collection of object where elements are ordered and may appear many times. 10 | 11 | .Collections mapping 12 | [options="header"] 13 | |=============================================================== 14 | |Meta-property |ISO 19103:2015 |Java type |Python type 15 | |`isUnique` |`Set` ^(1)^ |`java.util.Set` |`Set` 16 | |`isOrdered` |`Sequence` ^(1)^ |`java.util.List`|`Sequence` 17 | | |`Dictionary` |`java.util.Map` |`dict` 18 | |=============================================================== 19 | 20 | Notes: 21 | 22 | * (1) Deprecated in ISO 19103:2024, but listed because still present in some standards. 23 | 24 | Unless otherwise required by the semantic of a property, GeoAPI prefers to use the `Collection` type in Java method signatures. 25 | This allows implementers to choose their preferred subtypes, usually `Set` or `List`. 26 | The `Set` type is not the default type because enforcing element uniqueness may constrain implementations to use hash tables 27 | or similar algorithms, which is not always practical. 28 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/core_types.adoc: -------------------------------------------------------------------------------- 1 | [[core_types]] 2 | === Core data types mapping 3 | 4 | The ISO 19103 specification (_Geographic Information – Conceptual schema language_) defines types 5 | which are used as building blocks by the other standards in the 19100 series. 6 | <> defines code data types such as real numbers, dates and times. 7 | GeoAPI maps these types either to existing types from the {supported-languages} standard libraries or, when needed, 8 | to types defined in the `opengis​.util` package. 9 | That utility package is used by GeoAPI for types defined in the ISO 19103 specification 10 | for which no equivalence is already present in the {supported-languages} standard libraries. 11 | 12 | For various practical reasons the mapping from ISO types to programming language types is not a one-to-one relationship. 13 | The mapping actually used is explained below. 14 | Furthermore, not all of the types in ISO 19103 have a mapping defined because the need for these types has not yet appeared, 15 | since they have not yet appeared in any other specification for which GeoAPI defines interfaces. 16 | Such types are listed as "unimplemented" in the tables below. 17 | 18 | 19 | include::common_types.adoc[] 20 | 21 | include::datetime.adoc[] 22 | 23 | include::collections.adoc[] 24 | 25 | include::controlled_vocabulary.adoc[] 26 | 27 | include::generic_name.adoc[] 28 | 29 | include::records.adoc[] 30 | 31 | include::internationalization.adoc[] 32 | 33 | include::units.adoc[] 34 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/derived_properties.adoc: -------------------------------------------------------------------------------- 1 | [[derived_properties]] 2 | ==== Derived methods 3 | 4 | GeoAPI may define additional methods not explicitly specified in OGC/ISO abstract models, 5 | when the values returned by those methods can be derived from the values provided by standard OGC/ISO properties. 6 | Those extensions are enabled by the way properties are handled. 7 | In OGC/ISO abstract models, each property may have its value stored verbatim, 8 | for example as a column in a database table, an XML element in a file, or a field in a class. 9 | For enabling efficient use of OGC/ISO models in relational databases or XML files, 10 | the models are generally non-redundant: each value is stored in exactly one property. 11 | By contrast in GeoAPI, all properties are getter methods: 12 | no matter how implementations store property values, users can fetch them only through method calls. 13 | Since methods are free to compute values from other properties, 14 | GeoAPI uses this capability for making some information more easily accessible 15 | in situations where property values can be reached only indirectly in OGC/ISO models. 16 | Thee additional methods introduce apparent duplication, 17 | but they should be thought of as links to the real properties, rather than copies of the property values. 18 | Such methods are added sparsely, 19 | in places where introducing them brings some harmonization by reducing the need for special cases. 20 | Examples include: fetching the head of an arbitrary `Generic­Name`, 21 | fetching the Geodetic Reference Frame indirectly associated to a `ProjectedCRS`, 22 | fetching axes of an arbitrary Coordinate Reference System (including compound ones), and more. 23 | The additional methods can be recognized by the absence of `@UML` annotation. 24 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/feature/index.adoc: -------------------------------------------------------------------------------- 1 | [[feature]] 2 | === Feature packages 3 | 4 | The GeoAPI feature package uses the `opengis​.feature` namespace 5 | and implements the types defined in the <> – _Rules for application schema_ specification. 6 | The main UML materialized by GeoAPI is ISO 19109 figure 5 #(TODO: verify)#. 7 | 8 | #TODO: provide UML and explain the mapping.# 9 | 10 | include::moving.adoc[] 11 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/feature/moving.adoc: -------------------------------------------------------------------------------- 1 | [[moving_feature]] 2 | ==== Moving features 3 | _From <> figure 3_ 4 | 5 | Features often have an attribute of type `Geometry` (<>). 6 | A sub-type of `Geometry` is `Trajectory` (<>). 7 | A feature where the geometry is a trajectory is a moving feature. 8 | In addition of time-dependent positions defined by the trajectory, 9 | a moving feature may also have time-dependent attribute values. 10 | These attributes are represented by the `Dynamic­Attribute` sub-type. 11 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/filter/capabilities.adoc: -------------------------------------------------------------------------------- 1 | [[filter_capabilities]] 2 | ==== Capabilities 3 | _From <> §7.13_ 4 | 5 | `FilterCapabilities` is the entry point for listing which expressions and filter operators are available. 6 | Its capabilities are separated in the following categories: 7 | 8 | * `IdCapabilities` lists names that represent the resource identifier elements that the service supports. 9 | * `Scalar­Capabilities` advertises which logical, comparison and arithmetic operators the service supports. 10 | * `Spatial­Capabilities` advertises which spatial operators and geometric operands the service supports. 11 | * `Temporal­Capabilities` advertises which temporal operators and temporal operands the service supports. 12 | * `Available­Function` describes functions that may be used in filter expressions. 13 | * `Extended­Capabilities` advertises any additional operators added to the filter syntax. 14 | 15 | The enumeration of scalar, spatial and temporal capabilities use the code lists shown in <>. 16 | The arguments of available functions are described by the unified parameter API (<>). 17 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/filter/filter.adoc: -------------------------------------------------------------------------------- 1 | [[filter]] 2 | ==== Filter 3 | _From <> §7.[7…11]_ 4 | 5 | A filter is a predicate that identifies a subset of resources from a collection of resources. 6 | Each resource instance is evaluated against a filter, which always evaluates to `true` or `false`. 7 | If the filter evaluates to `true`, the resource instance is included in the result set. 8 | If the filter evaluates to `false`, the resource instance is ignored. 9 | Roughly speaking, a filter encodes the information present in the `WHERE` clause of a SQL statement. 10 | 11 | There are various sub-interfaces of this interface that represent many types of filters, 12 | such as simple property comparisons or spatial queries. 13 | The following diagram shows the 4 basic types of filters 14 | together with the code lists identifying which operation is applied. 15 | More specialized sub-types such as `Binary­Comparison­Operator` and `Distance­Operator` are not shown in this diagram. 16 | 17 | [[filter_UML]] 18 | .Partial UML of filters 19 | image::filter.svg[Filter UML] 20 | 21 | In the above diagram, the `operator­Type` property defined in the `Filter` parent interface 22 | is overridden by more specialized types (shown as associations) in each sub-interface. 23 | This is <>. 24 | Likewise `expression` is defined in parent interface with unconstrained multiplicity, 25 | but that multiplicity is restrained in sub-interfaces. 26 | 27 | Filter operands are expressions. 28 | For example, a filter named `"PropertyIs­EqualTo"` uses two expressions. 29 | The first expression may be a `Value­Reference` fetching the value of a property 30 | and the second expression may be a `Literal` with the desired value. 31 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/filter/index.adoc: -------------------------------------------------------------------------------- 1 | [[filtering]] 2 | === Filter packages 3 | 4 | The GeoAPI filter packages use the `opengis​.filter` namespace 5 | and implement the types defined in the <> - _Filter encoding_ specification. 6 | GeoAPI ignores the XML encoding aspects and retains only the types defined in UML diagrams. 7 | 8 | The two most fundamental types are `Expression` and `Filter`, shown in the next sections. 9 | All expressions are identified by a `Scoped­Name` and all filters are identified by a `Code­List`. 10 | This is an extension to the ISO 19143 specification where only some specific sub-types have these identifications. 11 | This generalization allows, in some cases, to execute generic code without the need to check the filter or expression sub-types. 12 | 13 | include::expression.adoc[] 14 | 15 | include::filter.adoc[] 16 | 17 | include::capabilities.adoc[] 18 | 19 | include::departures.adoc[] 20 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/geometry/departures.adoc: -------------------------------------------------------------------------------- 1 | [[geometry_departures]] 2 | ==== Departures from ISO 19107 3 | 4 | Geometries in GeoAPI differ from the OGC/ISO standards 5 | as described in the following sub-sections. 6 | 7 | 8 | [[geometry_departures_as_renaming]] 9 | ==== Renaming 10 | The parent class of all geometries is called `GM​_Object` in the ISO 19107 standard. 11 | GeoAPI interfaces use the `Geometry` name instead, 12 | as the omission of the `GM_ prefix` would leave a name too similar to Java’s `Object` class. 13 | 14 | [[geometry_departures_for_convenience]] 15 | ===== Convenience 16 | GeoAPI has moved the `Direct­Position` and `Envelope` types from the coordinate sub-package 17 | where they are defined in the ISO 19107 specification up to the `opengis​.geometry` package 18 | due to their importance and frequency of use. 19 | 20 | [[geometry_departures_as_additions]] 21 | ===== Efficiency 22 | GeoAPI adds the following shortcut methods in the `Envelope` interface. 23 | They are frequently requested information that implementers can often provide 24 | in a more efficient way than forcing users to compute them from lower and upper corners: 25 | `dimension`, `minimum`, `maximum`, `median` and `span`. 26 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/mapping_rules.adoc: -------------------------------------------------------------------------------- 1 | [[mapping_rules]] 2 | === General mapping rules 3 | 4 | This section gives high-level guidance in the mapping from UML to {supported-languages} API applying to all GeoAPI types. 5 | Other sections after this one will focus on specific type subsets (metadata, referencing, _etc_). 6 | The guidelines are not strict rules; departures from them exist on a case-by-case basis when semantically justifiable. 7 | 8 | 9 | include::naming.adoc[] 10 | 11 | include::multiplicity.adoc[] 12 | 13 | include::annotations.adoc[] 14 | 15 | include::derived_properties.adoc[] 16 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/metadata/nil_values.adoc: -------------------------------------------------------------------------------- 1 | [[nil_values]] 2 | ==== Nil values 3 | 4 | <> – _XML schema implementation for fundamental concepts_ allows property values to be nil 5 | even when the property is declared mandatory by ISO 19115-1 standard. 6 | In such case, ISO 19115-3 requires to specify why the property is nil. 7 | Nil reasons can be: 8 | 9 | * *Template:* the metadata is only a template with values to be provided later. 10 | * *Withheld:* the value is not divulged. 11 | * *Unknown:* a correct value probably exists but is not known and not computable. 12 | * *Missing:* the correct value is not readily available and may not exist. 13 | * *Inapplicable:* there is no value. 14 | 15 | GeoAPI does not provide a mechanism for specifying the reason why a property is nil. 16 | Instead, the GeoAPI rules of method return values have been relaxed for the metadata packages. 17 | Elsewhere in GeoAPI, methods which have a mandatory obligation in the specification 18 | must return an instance of the return type and cannot return the Java `null` or Python `None` reference. 19 | However, in the metadata package this rule is relaxed because data sets are encountered so frequently 20 | which have nil values for any of above-cited reasons. 21 | In the GeoAPI metadata packages, methods for mandatory properties should return a valid instance, 22 | but users should be prepared to receive `null` (Java), `None` (Python) or an empty collection. 23 | This modification has been adopted to allow implementations sufficient latitude 24 | about how to handle metadata records with nil values. 25 | Nonetheless, sophisticated implementations can determine if a metadata record conforms with 26 | the ISO 19115-1 specification by inspecting the annotations at runtime (<>). 27 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/temporal/departures.adoc: -------------------------------------------------------------------------------- 1 | [[temporal_departures]] 2 | ==== Departures from ISO 19108 3 | 4 | Significant departures of GeoAPI from the ISO 19108 standard are the omission of the 5 | `TM_ReferenceSystem` and `TM_TemporalPosition` interfaces, as described in above tables. 6 | The former interface is replaced by `TemporalCRS`, which has been added to ISO 19111 after the publication of ISO 19108. 7 | As a consequence of this replacement, the `TM_TemporalPosition` interface become similar to `DirectPosition` 8 | and can be replaced by the latter with the following substitutions: 9 | 10 | * The `TM_TemporalPosition.frame` association is replaced by `DirectPosition.coordinateReferenceSystem`. 11 | * The `TM_Coordinate.coordinateValue` property is replaced by `DirectPosition.coordinate`. 12 | * The `TM_TemporalPosition.indeterminatePosition` property moved to `TM_Instant`. 13 | 14 | The latter change is because `TM_TemporalPosition` is replaced by the temporal objects of the standard library 15 | of the target programming languages, and those standard objects do not have an `indeterminatePosition` property. 16 | 17 | Another harmonization is the omission of the `TM_RelativePosition` code list. 18 | That code list is identical to the ISO 19143 `TemporalOperatorName` code list, except for one value. 19 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/informative/units.adoc: -------------------------------------------------------------------------------- 1 | [[units]] 2 | ==== Units of measurement 3 | _From <> §8.2.14_ 4 | 5 | ISO 19103 represents measurements and their units by two base interfaces: 6 | `Measure` for the result from performing the act of ascertaining the value of a characteristic of some entity, 7 | and `UnitOf­Measure` as a quantity adopted as a standard of measurement for other quantities of the same kind. 8 | These two base interfaces can be specialized with parallel sets of subtypes. 9 | For example, `Length` could be defined as a `Measure` specialization for distances, 10 | accompanied by `UomLength` as a `UnitOf­Measure` specialization for length units. 11 | Likewise, `Area` could be defined together with `UomArea`, `Time` together with `UomTime`, _etc._ 12 | 13 | [NOTE] 14 | ====== 15 | ISO 19103:2015 §C.4 defined many subtypes such as `Area`, `UomArea`, _etc_. 16 | ISO 19103:2024 defines only the base types. 17 | The legacy subtypes are listed in <>. 18 | ====== 19 | 20 | GeoAPI does not define any interface for the ISO 19103 `Measure` and `UnitOf­Measure` types 21 | because {supported-languages} already have their own library for units of measurement. 22 | For example, Java has standardized a set of quantity interfaces in the Java Specification Request <>. 23 | When such a language-specific standard exists and provides equivalent functionality to ISO 19103, that external standard is used. 24 | See Java profile (<>) or Java example code (<>) for more information. 25 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/profiles/java/annex.adoc: -------------------------------------------------------------------------------- 1 | [appendix,obligation="normative"] 2 | [[java]] 3 | == Java Profile 4 | 5 | In addition to this document, this specification includes the GeoAPI Java Archive file `geoapi​.jar`. 6 | That file can be downloaded using the following Maven coordinates: 7 | 8 | [source,xml] 9 | ------------- 10 | 11 | org.opengis 12 | geoapi 13 | 4.0-SNAPSHOT 14 | 15 | ------------- 16 | #TODO: replace snapshot by final version number.# 17 | 18 | Libraries shall implement at least some interfaces defined in that archive file. 19 | It is not required to implement all interfaces. 20 | The contract for each interface and each method is specified in the javadoc. 21 | 22 | include::uom_jsr.adoc[] 23 | 24 | include::filter.adoc[] 25 | 26 | include::tests.adoc[] 27 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/profiles/java/filter.adoc: -------------------------------------------------------------------------------- 1 | [[java_filter]] 2 | === Filters and Java functions 3 | 4 | Java `Stream` provides an efficient way to deliver a potentially large number of features. 5 | The GeoAPI interfaces for filters and expressions have been designed for working smoothly 6 | with the `java​.util​.stream` interfaces. In particular: 7 | 8 | * The GeoAPI `Expression` interface extends the Java `Function` interface. 9 | Consequently, expressions can be used with the Java standard `Stream​.map(Function)` method. 10 | * The GeoAPI `Filter` interface extends the Java `Predicate` interface. 11 | Consequently, filters can be used with the Java standard `Stream​.filter(Predicate)` method. 12 | * The GeoAPI `SortBy` interface extends the Java `Comparator` interface. 13 | Consequently, sort order can be used with the Java standard `Stream​.sorted(Comparator)` method. 14 | 15 | Note that GeoAPI aims for interoperability with streams, but does not mandate their use. 16 | Implementations are free to ignore streams. 17 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/profiles/java/tests.adoc: -------------------------------------------------------------------------------- 1 | [[tests_java]] 2 | === Tests suite 3 | 4 | The `geoapi-conformance` module contains a number of validators which can be used 5 | in JUnit test cases to test compliance of the objects created in an implementation. 6 | The GeoAPI validators can establish that certain instances are invalid and therefore 7 | can readily be integrated into the test suite of any implementation library. 8 | The following code demonstrates an example which uses the validators to evaluate 9 | an instance object created by the implementation within a unit test. 10 | This test requires the JUnit library, version 4 or later, on the Java Classpath. 11 | 12 | [source,java] 13 | ------------- 14 | import static org.opengis.test.Validators.*; 15 | 16 | public class ValidationTests { 17 | @Test 18 | public void testCRS() { 19 | // The implementation would build this CRS 20 | CoordinateReferenceSystem crs = ...; 21 | validate(crs); 22 | } 23 | } 24 | ------------- 25 | 26 | If the validation fails, the JUnit library would throw an `Assertion­Error`. 27 | 28 | #TODO: explain coordinate operation tests, GIGS tests.# 29 | -------------------------------------------------------------------------------- /src/main/metanorma/sections/profiles/python/annex.adoc: -------------------------------------------------------------------------------- 1 | [appendix,obligation="normative"] 2 | [[python]] 3 | == Python Profile 4 | 5 | #TODO# 6 | -------------------------------------------------------------------------------- /src/main/metanorma/tests/README.adoc: -------------------------------------------------------------------------------- 1 | # Description of conformance tests 2 | 3 | This folder contains the Test Suite. 4 | For each test, there should be a corresponding requirement in the "requirements" folder. 5 | -------------------------------------------------------------------------------- /src/main/metanorma/tests/class_core.adoc: -------------------------------------------------------------------------------- 1 | [[tests_class_core]] 2 | [conformance_class_core] 3 | ==== 4 | [%metadata] 5 | label:: http://www.opengis.net/spec/geoapi/{edition}/conf/core 6 | subject:: Requirements Class "Core" 7 | classification:: Target Type: library 8 | ==== 9 | 10 | ==== Test signature 11 | 12 | include::test_signatures.adoc[] 13 | 14 | ==== Test behavior 15 | 16 | include::test_invariants.adoc[] 17 | -------------------------------------------------------------------------------- /src/main/metanorma/tests/test_invariants.adoc: -------------------------------------------------------------------------------- 1 | [[test-invariants]] 2 | [abstract_test] 3 | ==== 4 | [%metadata] 5 | label:: /conf/core/api-definition 6 | subject:: /req/req-class-lib/req-invariants 7 | test-purpose:: Verify that all methods behave as specified. 8 | 9 | [.component,class=test method] 10 | ===== 11 | [.component,class=step] 12 | -- 13 | #TODO: describes how to use validators.# 14 | -- 15 | 16 | [.component,class=step] 17 | -- 18 | All the instances of GeoAPI interfaces shall be valid according to the test validator, 19 | whenever a validator exists for the instance type. 20 | This does not require that all instances be tested but merely that if the instances were tested, 21 | they would validate. 22 | -- 23 | ===== 24 | ==== 25 | -------------------------------------------------------------------------------- /src/main/metanorma/tests/test_signatures.adoc: -------------------------------------------------------------------------------- 1 | [[test-signatures]] 2 | [abstract_test] 3 | ==== 4 | [%metadata] 5 | label:: /conf/core/api-definition 6 | subject:: /req/req-class-lib/req-signatures 7 | test-purpose:: Verify that all types and properties in OGC namespace are as published. 8 | 9 | [.component,class=test method] 10 | ===== 11 | [.component,class=step] 12 | -- 13 | #TODO: write a Java program verifying signature of all classes and methods in the `org.opengis` namespace. 14 | This verification would be done for the "libraries" target type only, not the "applications" target type.# 15 | -- 16 | ===== 17 | ==== 18 | -------------------------------------------------------------------------------- /src/main/python/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include setup.py 2 | -------------------------------------------------------------------------------- /src/main/python/README.md: -------------------------------------------------------------------------------- 1 | # GeoAPI for python 2 | 3 | This Python module offers implementation-neutral interfaces for OGC/ISO standards. 4 | These interfaces can be implemented by wrappers around libraries, not necessarily 5 | in Python. A wrapper around the Java implementations of GeoAPI is provided. 6 | 7 | 8 | ## Installation 9 | 10 | If any version of this package has been installed before, 11 | it should be uninstalled first by the `pip uninstall` command. 12 | Uninstallation and installation commands need to be run as administrator, which is done by `sudo`: 13 | 14 | ``` 15 | # Skip next line if GeoAPI has not been previously installed. 16 | sudo pip uninstall geoapi 17 | sudo pip install geoapi-.tar.gz 18 | ``` 19 | -------------------------------------------------------------------------------- /tools/src/main/bash/README.md: -------------------------------------------------------------------------------- 1 | Unix shell scripts for building some GeoAPI artifacts that are too difficult to build with Maven. 2 | Only Unix `bash` is supported. 3 | -------------------------------------------------------------------------------- /tools/src/main/bash/update_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Update the copyright years of all files in the git repository. 4 | # This script searches Java and Python files recursively from the 5 | # current directory at the time this script is invoked. 6 | # 7 | set -o errexit 8 | SCRIPT_DIR=`dirname "$0"` 9 | find -type f \( -name "*.java" -o -name "*.py" \) -exec $SCRIPT_DIR/update_copyright_years.sh '{}' \; 10 | -------------------------------------------------------------------------------- /tools/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2017-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Javadoc taglets and annotation processing tools for processing GeoAPI after compilation. 21 | * Those tools are used mostly for javadoc generation. 22 | * Some services offered by this module are: 23 | * 24 | *
    25 | *
  • Generating API index page: 26 | * A summary of all types and members can be generated by the 27 | * {@link org.opengis.tools.apt.IndexGenerator} processor.
  • 28 | *
  • Documenting a summary of API changes: 29 | * A summary of API changes can be generated by the 30 | * {@link org.opengis.tools.version.ChangeReport} class.
  • 31 | *
32 | * 33 | * Usage instructions from command-line are in the 34 | * README.md file. 35 | * 36 | * @author Martin Desruisseaux (Geomatys) 37 | * @version 4.0 38 | * @since 3.0 39 | */ 40 | module org.opengis.geoapi.build { 41 | requires jdk.javadoc; 42 | } 43 | -------------------------------------------------------------------------------- /tools/src/main/java/org/opengis/tools/apt/UMLMember.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2014-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package org.opengis.tools.apt; 19 | 20 | 21 | /** 22 | * Members of the {@link org.opengis.annotation.UML} annotation. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @version 3.1 26 | * @since 3.1 27 | */ 28 | enum UMLMember { 29 | /** 30 | * {@code identifier()}. 31 | */ 32 | IDENTIFIER("identifier"), 33 | 34 | /** 35 | * {@code specification()}. 36 | */ 37 | SPECIFICATION("specification"), 38 | 39 | /** 40 | * {@code version()}. 41 | */ 42 | VERSION("version"); 43 | 44 | /** 45 | * The member name. 46 | */ 47 | final String methodName; 48 | 49 | /** 50 | * Creates a new enumeration for the given member name. 51 | */ 52 | private UMLMember(final String methodName) { 53 | this.methodName = methodName; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /tools/src/main/java/org/opengis/tools/apt/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2009-2024 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Annotation processing tools for processing GeoAPI after compilation. Those tools are 21 | * used mostly for javadoc generation. They are not part of normal GeoAPI distributions. 22 | * 23 | *

The {@link org.opengis.tools.apt.IndexGenerator} processor is used for regenerating 24 | * the {@code src/main/javadoc/content.html} file.

25 | * 26 | * @author Martin Desruisseaux (Geomatys) 27 | * @version 3.1 28 | * @since 2.0 29 | */ 30 | package org.opengis.tools.apt; 31 | -------------------------------------------------------------------------------- /tools/src/main/java/org/opengis/tools/doclet/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2014-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | 20 | /** 21 | * Doclet that modify the behavior of some standard options, together with 22 | * Javadoc taglets for processing custom tags in GeoAPI source code comments. 23 | * 24 | * @author Martin Desruisseaux (Geomatys) 25 | * @since 3.1 26 | * @version 3.1 27 | */ 28 | package org.opengis.tools.doclet; 29 | -------------------------------------------------------------------------------- /tools/src/main/java/org/opengis/tools/version/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * GeoAPI - Java interfaces for OGC/ISO standards 3 | * Copyright © 2012-2023 Open Geospatial Consortium, Inc. 4 | * http://www.geoapi.org 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | 20 | /** 21 | * Tools for management of various GeoAPI versions. 22 | * The following tools can be executed from the command line: 23 | * 24 | *
    25 | *
  • {@link org.opengis.tools.version.ChangeReport} produces a HTML page summarizing the 26 | * API differences between two GeoAPI JAR files. This is used during release processes 27 | * in order to document the list of changes.
  • 28 | *
29 | * 30 | * @author Martin Desruisseaux (Geomatys) 31 | * @version 3.1 32 | * @since 3.1 33 | */ 34 | package org.opengis.tools.version; 35 | --------------------------------------------------------------------------------