Java 哪个jar文件包含org.n52.wps.server.observerpattern.ISubject以及如何下载它?

Java 哪个jar文件包含org.n52.wps.server.observerpattern.ISubject以及如何下载它?,java,gis,Java,Gis,我想写一个.java文件并将其导入wps服务,但我的代码如下 package org.n52.wps.demo; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureIterator; import org.geotools.geomet

我想写一个.java文件并将其导入wps服务,但我的代码如下

package org.n52.wps.demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.geometry.iso.topograph2D.Coordinate;
import org.geotools.geometry.jts.CoordinateSequenceTransformer;
import org.n52.wps.server.AbstractSelfDescribingAlgorithm;
import org.n52.wps.io.data.IData;
import org.n52.wps.io.data.binding.complex.GTVectorDataBinding;


import net.opengis.wps.x100.ProcessDescriptionType;
public class ConvexHullDemo extends AbstractSelfDescribingAlgorithm {

@Override
public Class<?> getInputDataType(String identifier) {
    if (identifier.equalsIgnoreCase("FEATURES")) {
        return GTVectorDataBinding.class;
    }
}

@Override
public Class<?> getOutputDataType(String identifier) {
    if (identifier.equalsIgnoreCase("FEATURE")) {
        return GTVectorDataBinding.class;
    }
}

@Override
public List<String> getInputIdentifiers() {
    List<String> list=new ArrayList<String>();
    list.add("FEATURES");
    return list;
}

@Override
public List<String> getOutputIdentifiers() {
    List<String> list=new ArrayList<String>();
    list.add("polygon");
    return list;
}

@Override
public Map<String, IData> run(Map<String, List<IData>> inputData) {

    if (inputData == null || !inputData.containsKey("FEATURES")) {
        throw new RuntimeException("Error while allocating input parameters");
}

List<IData> dataList = inputData.get("FEATURES");

if (dataList == null || dataList.size() != 1) {
        throw new RuntimeException("Error while allocating input parameters");
}

IData firstInputData = dataList.get(0);
FeatureCollection featureCollection = ((GTVectorDataBinding) firstInputData).getPayload();
}

FeatureIterator iter = featureCollection.
List<Coordinate> coordinateList = new ArrayList<Coordinate>();
int counter = 0;
Geometry unifiedGeometry = null;
while (iter.hasNext()) {
                SimpleFeature feature = (SimpleFeature) iter.next();
                if (feature.getDefaultGeometry() == null) {
                        throw new NullPointerException("defaultGeometry is null in feature id: "+ feature.getID());
                }
                Geometry geom = (Geometry) feature.getDefaultGeometry();
                Coordinate[] coordinateArray = geom.getCoordinates();
                for(Coordinate coordinate : coordinateArray){
                        coordinateList.add(coordinate);
                }
}

}
package org.n52.wps.demo;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Map;
导入org.geotools.feature.FeatureCollection;
导入org.geotools.feature.FeatureIterator;
导入org.geotools.geometry.iso.topograph2D.Coordinate;
导入org.geotools.geometry.jts.CoordinateSequenceTransformer;
导入org.n52.wps.server.AbstractSelfDescriptionAlgorithm;
导入org.n52.wps.io.data.IData;
导入org.n52.wps.io.data.binding.complex.GTVectorDataBinding;
导入net.opengis.wps.x100.ProcessDescriptionType;
公共类ConvexHullDemo扩展了AbstractSelfDescription算法{
@凌驾
公共类getInputDataType(字符串标识符){
if(标识符.equalsIgnoreCase(“特征”)){
返回GTVectorDataBinding.class;
}
}
@凌驾
公共类getOutputDataType(字符串标识符){
if(标识符.equalsIgnoreCase(“特征”)){
返回GTVectorDataBinding.class;
}
}
@凌驾
公共列表getInputIdentifiers(){
列表=新的ArrayList();
列表。添加(“特征”);
退货清单;
}
@凌驾
公共列表getOutputIdentifiers(){
列表=新的ArrayList();
添加(“多边形”);
退货清单;
}
@凌驾
公共地图运行(地图输入数据){
if(inputData==null | |!inputData.containsKey(“功能”)){
抛出新的RuntimeException(“分配输入参数时出错”);
}
List dataList=inputData.get(“功能”);
if(dataList==null | | dataList.size()!=1){
抛出新的RuntimeException(“分配输入参数时出错”);
}
IData firstInputData=dataList.get(0);
FeatureCollection FeatureCollection=((GTVectorDataBinding)firstInputData).getPayload();
}
FeatureIterator iter=featureCollection。
列表坐标列表=新的ArrayList();
int计数器=0;
几何统一计量=空;
while(iter.hasNext()){
SimpleFeature=(SimpleFeature)iter.next();
if(feature.getDefaultGeometry()==null){
抛出新的NullPointerException(“defaultGeometry在feature id:+feature.getID()中为null”);
}
几何图形几何图形=(几何图形)特征。getDefaultGeometry();
坐标[]坐标array=geom.getCoordinates();
用于(坐标:CoordinatorRay){
坐标列表。添加(坐标);
}
}
}
和此代码的完整教程:

但出现了这样的错误:

这条线上有多个标记

  • ConvexHullDemo类型的层次结构不一致

  • 无法解析类型org.n52.wps.server.observerpattern.ISubject。它是从必需的.class文件间接引用的


哪个jar包含这个
org.n52.wps.server.observerpattern.ISubject
以及我如何下载它?

在发布问题之前,您可能需要多读一点,因为我在您链接的网站上找到了您问题的答案:

它说您应该设置WPS,如下所述: