2017-06-01 121 views
1

我是WFS和geotools的新手。我试图连接到LRIS WFS。尝试连接到WFS时发生NullPointerException

代码如下:

String getCapabilities = "https://lris.scinfo.org.nz/services;key=ENTER-KEY/wfs/layer-66?service=WFS&request=GetCapabilities"; 

Map connectionParameters = new HashMap(); 
connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", getCapabilities); 

// Step 2 - connection  
DataStore data = DataStoreFinder.getDataStore(connectionParameters); 

// Step 3 - discouvery 
String typeNames[] = data.getTypeNames(); 

我得到一个空指针异常就行:

String typeNames[] = data.getTypeNames(); 

任何帮助表示赞赏。谢谢。

回答

0

最佳做法是在使用之前检查DataStore是否已打开(即不是空)。

与下面的代码我找回数据很容易地说,我假定你已经添加你自己的关键网址:

String getCapabilities = "https://lris.scinfo.org.nz/services;key=myKEY/wfs/layer-66?service=WFS&request=GetCapabilities"; 

    Map connectionParameters = new HashMap(); 
    connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", getCapabilities); 
    connectionParameters.put("WFSDataStoreFactory:WFSDataStoreFactory:TIMEOUT", 10000000); 
    // Step 2 - connection 
    DataStore data = DataStoreFinder.getDataStore(connectionParameters); 
    if(data==null) { 
     System.err.println("failed to open datastore at "+getCapabilities); 
    } 
    // Step 3 - discouvery 
    String types[] = data.getTypeNames(); 
    for (int i = 0; i < types.length; i++) { 
     System.out.println(types[i]); 

     String name = types[i]; 
     Query query = new Query(name); 
     query.setCoordinateSystem(DefaultGeographicCRS.WGS84); 
     SimpleFeatureSource source = data.getFeatureSource(name); 
     SimpleFeatureType schema = source.getSchema(); 
     System.out.println(schema); 
     SimpleFeatureCollection fc = source.getFeatures(query); 
     int count = 0; 
     while (fc.features().hasNext() && (count++ < 10)) { 
     SimpleFeature sf = fc.features().next(); 
     System.out.println(sf); 
     } 
    } 
    } 

请注意,我也不得不调高超时参数作为新西兰在英国离我很远。

相关问题