Package ucar.unidata.data.gis
Class JsonDataSource
java.lang.Object
ucar.unidata.collab.SharableImpl
ucar.unidata.data.DataSourceImpl
ucar.unidata.data.FilesDataSource
ucar.unidata.data.gis.JsonDataSource
- All Implemented Interfaces:
Sharable
,DataSource
,DataSourceFactory
,XmlPersistable
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
xml attributestatic final String
xml attributeprotected List
A local cacheprotected List
The urlsprotected List
The colorMapstatic final String
For ximg filesstatic final PatternFileFilter
For ximg filesprotected HashMap
The jsonInfostatic final String
For ximg filesstatic final String
kml tag idstatic final String
kml tag idstatic final String
kml tag idstatic final String
xml tagstatic final String
xml tagstatic final String
xml tagstatic final String
xml tagstatic final String
kml tag idstatic final String
kml tag idstatic final String
kml tag idstatic final String
kml tagstatic final String
kml tag idstatic final String
xml tagstatic final String
kml tag idstatic final String
xml tagprotected List
The timeListprotected List
boolean
_more_Fields inherited from class ucar.unidata.data.FilesDataSource
adapters, oldSourceFromBundles, sources
Fields inherited from class ucar.unidata.data.DataSourceImpl
changeDataPathsCbx, dataCacheKey, dataChoices, geoSelectionPanel, haveBeenUnPersisted, okToContinue, PARAM_SHOW_HIDE, PARAM_SHOW_NO, PARAM_SHOW_YES
Fields inherited from interface ucar.unidata.data.DataSource
DATAPATH_DATE_FORMAT, DATAPATH_DATE_PATTERN, MOST_RECENT, ordinalNames, PROP_AUTOCREATEDISPLAY, PROP_BASEDIRECTORY, PROP_CACHEABLE, PROP_DATACHOICENAME, PROP_DISPLAYPROPERTIES, PROP_DOCUMENTLINKS, PROP_FILEPATTERN, PROP_GEOLOCATION, PROP_ICON, PROP_NAME, PROP_POLLINFO, PROP_RESOLVERURL, PROP_SERVICE_HTTP, PROP_SUBPROPERTIES, PROP_TIMELABELS, PROP_TIMESTRIDE, PROP_TITLE
-
Constructor Summary
ConstructorsConstructorDescriptionDummy constructor so this object can get unpersisted.JsonDataSource
(DataSourceDescriptor descriptor, String probSevereUrl, Hashtable properties) Create a KmlDataSource from the specification given.JsonDataSource
(DataSourceDescriptor descriptor, List newSources, Hashtable properties) Create a KmlDataSource from the specification given. -
Method Summary
Modifier and TypeMethodDescriptionstatic String
createKml
(GeoLocationInfo bounds, String imageFileName) Create some kml from the given bounds and image filestatic void
createLatLonBox
(GeoLocationInfo bounds, StringBuffer sb) Utility to create a latlonbox kmlprotected void
Create the data choices associated with this source.protected List
Create a list of times for this data source.void
expandIfNeeded
(CompositeDataChoice parent) Expand the data choice if its a networklinkTry to merge children up into parents of only one childgetAllDateTimes
(DataChoice dataChoice) Get all the times for the given DataChoicegetAllTimesForTimeDriver
(DataChoice dataChoice, DataSelection selection, List<DateTime> timeDriverTimes) Get the list of times to compare to the time driver timesprotected Data
getDataInner
(DataChoice dataChoice, DataCategory category, DataSelection dataSelection, Hashtable requestProperties) Actually get the data identified by the given DataChoce.protected InputStream
getInputStream
(String path) Create the input stream.int
getTimeIndexWithBounds
(DateTime dateTime, List<DateTime> allTimes, ucar.nc2.ft2.coverage.CoverageCoordAxis1D cca) void
init KmlDataSource from the specification given.void
Initialize after we have been unpersistedprotected void
load probsevere color mapjsonObjToString
(org.json.simple.JSONObject jsonObj) build the json object stringstatic void
test mainprotected void
Get the kml root elementprotected void
parseJSONHead
(String jsonUrl) Get the time list informationparseJSONModel
(org.json.simple.JSONArray coords, org.json.simple.JSONObject probJSON) parsing the json object coordinate and propertiesprocessXml
(Element root) Get color map from xml fileprotected byte[]
Utility to read the bytes from the file or urlprotected Document
readColorMapXml
(String href) Get color map from xml fileprotected Image
Read the imagevoid
reloadprotected boolean
shouldCache
(Data data) See if this DataSource should cache or notstatic void
writeToFile
(String kmlFilename, GeoLocationInfo bounds, String imageFileName) write image as a kml to fileMethods inherited from class ucar.unidata.data.FilesDataSource
doRemove, equals, getDataFileExtension, getDataPaths, getFilePath, getFullDescription, getInputStreams, getLocationsForPolling, getPartialDescription, getSource, getSources, haveSources, initAfterCreation, initWithPollingInfo, isFileBased, newFilesFromPolling, processDataFilename, propertiesChanged, reloadData, saveDataToLocalDisk, setNewFiles, setSource, setSources, sourcesChanged, updateState
Methods inherited from class ucar.unidata.data.DataSourceImpl
addActions, addDataChangeListener, addDataChoice, addPropertiesTabs, addReloadTab, applyFieldMask, applyProperties, beginWritingDataToLocalDisk, canAddCurrentName, canCacheDataToDisk, canChangeData, canDoAllLevels, canDoFieldMask, canDoGeoSelection, canDoGeoSelectionMap, canDoGeoSelectionStride, canPoll, canSaveDataToLocalDisk, canShowParameter, checkForInitAfterUnPersistence, clearCachedData, clearFileCache, clearTimes, convertSourceFile, convertToFilesIfDirectory, createAutoDisplay, createCacheKey, createElement, decrOutstandingGetDataCalls, doDirectory, doMakeGeoSelectionPanel, doMakeGeoSelectionPanel, doMakeGeoSelectionPanel, doMakeGeoSubsetPropertiesComponent, endWritingDataToLocalDisk, findDataChoice, findDataChoices, flushCache, getAbsoluteDateTimes, getActions, getAlias, getAllLevels, getAllLevels, getCache, getCache, getCacheClearDelay, getCacheDataToDisk, getCompositeDataChoices, getData, getData, getDataCachePath, getDataChangeListeners, getDataChoices, getDataContext, getDataInner, getDataIsEditable, getDataPrefix, getDataSelection, getDataSelectionComponents, getDataSource, getDateTimes, getDateTimeSelection, getDefaultSave, getDescription, getDescriptor, getErrorMessage, getEverChangedName, getExtraGeoSelectionComponent, getExtraTimesComponent, getFileFilterForPolling, getid, getIdv, getInError, getLocalDirectory, getLocationForPolling, getMostRecentFiles, getName, getNameForDataSource, getNeedToShowErrorToUser, getNextId, getOutstandingGetDataCalls, getPassword, getPathsThatCanBeRelative, getPollingInfo, getProperties, getPropertiesComponents, getPropertiesHeader, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getRelativePaths, getSampleDataProjection, getSaveDataFileLabel, getSelectedDateTimes, getSelectedDateTimes, getTimesFromDataSelection, getTmpPaths, getTypeName, getUserName, handlePropertiesAction, hasPollingInfo, holdsDateTimes, holdsIndices, identifiedBy, identifiedByName, incrOutstandingGetDataCalls, initAfter, initDataChoice, initDataSelectionComponents, initFromXml, isPolling, loadFieldMask, loadFieldMask, loadLatestFile, logException, logException, makeDerivedDataChoices, makeSaveLocalActions, newFileFromPolling, notifyDataChange, putCache, putCache, reloadProperties, removeCache, removeDataChangeListener, removeDataChoice, removeProperty, replaceDataChoice, resetTmpState, saveDataToLocalDisk, saveDataToLocalDisk, selectTimesFromList, setAlias, setAskToUpdate, setCacheClearDelay, setCacheDataToDisk, setDataEditableStrings, setDataIsEditable, setDataIsRelative, setDataRelativeStrings, setDataSelection, setDateTimeSelection, setDefaultSave, setDescription, setDescriptor, setDirectory, setEverChangedName, setInError, setInError, setInError, setName, setObjectProperties, setObjectProperty, setPassword, setPollingInfo, setPollLocation, setProperties, setProperty, setProperty, setRelativePaths, setTemplateName, setTmpPaths, setUserName, shouldCache, showPasswordDialog, showPropertiesDialog, showPropertiesDialog, showPropertiesDialog, showWaitDialog, tick, toString, toStringTruncated, updateDetailsText, writeFieldMaskFile, writeFieldMaskFile
Methods inherited from class ucar.unidata.collab.SharableImpl
applySharableProperties, doShare, doShare, doShareExternal, doShareInternal, getReceiveShareTime, getSharablePropertiesComponent, getShareGroup, getSharing, getUniqueId, initSharable, receiveShareData, removeSharable, setReceiveShareTime, setShareGroup, setSharing, setUniqueId, showSharableDialog
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface ucar.unidata.data.DataSource
getUniqueId
-
Field Details
-
FILTER_KML
For ximg files -
EXT_KML
For ximg files- See Also:
-
SUFFIX_KML
For ximg files- See Also:
-
ATTR_PARENT
xml attribute- See Also:
-
ATTR_NAME
xml attribute- See Also:
-
TAG_GROUNDOVERLAY
kml tag id- See Also:
-
TAG_PHOTOOVERLAY
kml tag- See Also:
-
TAG_URL
xml tag- See Also:
-
TAG_HREF
xml tag- See Also:
-
TAG_LINK
xml tag- See Also:
-
TAG_LINESTRING
xml tag- See Also:
-
TAG_SCHEMA
xml tag- See Also:
-
TAG_NETWORKLINK
kml tag id- See Also:
-
TAG_MULTIGEOMETRY
kml tag id- See Also:
-
TAG_DOCUMENT
kml tag id- See Also:
-
TAG_FOLDER
kml tag id- See Also:
-
TAG_KML
xml tag- See Also:
-
TAG_PLACEMARK
kml tag id- See Also:
-
TAG_NAME
kml tag id- See Also:
-
TAG_STYLEURL
kml tag id- See Also:
-
cachedData
A local cache -
cachedUrls
The urls -
jsonInfo
The jsonInfo -
colorMap
The colorMap -
timeList
The timeList -
times
-
useDriverTime
public boolean useDriverTime_more_
-
-
Constructor Details
-
JsonDataSource
public JsonDataSource()Dummy constructor so this object can get unpersisted. -
JsonDataSource
public JsonDataSource(DataSourceDescriptor descriptor, List newSources, Hashtable properties) throws VisADException, Exception Create a KmlDataSource from the specification given.- Parameters:
descriptor
- descriptor for the data sourcenewSources
- Where the json came fromproperties
- extra properties- Throws:
VisADException
- some problem occurred creating dataException
-
JsonDataSource
public JsonDataSource(DataSourceDescriptor descriptor, String probSevereUrl, Hashtable properties) throws VisADException, Exception Create a KmlDataSource from the specification given.- Parameters:
descriptor
- descriptor for the data sourceprobSevereUrl
- Where the kml came fromproperties
- extra properties- Throws:
VisADException
- some problem occurred creating dataException
-
-
Method Details
-
init
init KmlDataSource from the specification given.- Parameters:
probSevereUrl
- Where the json came from- Throws:
VisADException
- some problem occurred creating dataException
-
getAllTimesForTimeDriver
public List<DateTime> getAllTimesForTimeDriver(DataChoice dataChoice, DataSelection selection, List<DateTime> timeDriverTimes) Get the list of times to compare to the time driver times- Overrides:
getAllTimesForTimeDriver
in classDataSourceImpl
- Parameters:
dataChoice
- the data choiceselection
- the selection (for things like level)timeDriverTimes
- the time driver times (use range for server query)- Returns:
- the list of times for comparison
-
writeToFile
public static void writeToFile(String kmlFilename, GeoLocationInfo bounds, String imageFileName) throws FileNotFoundException, IOException write image as a kml to file- Parameters:
kmlFilename
- kml filenamebounds
- _image boundsimageFileName
- image filename- Throws:
FileNotFoundException
- On badnessIOException
- On badness
-
createKml
public static String createKml(GeoLocationInfo bounds, String imageFileName) throws FileNotFoundException, IOException Create some kml from the given bounds and image file- Parameters:
bounds
- boundsimageFileName
- image- Returns:
- kml
- Throws:
FileNotFoundException
- On badnessIOException
- On badness
-
createLatLonBox
Utility to create a latlonbox kml- Parameters:
bounds
- boundssb
- buffer to add to
-
main
test main- Parameters:
args
- cmd line args
-
initPolygonColorMap
protected void initPolygonColorMap()load probsevere color map -
processXml
Get color map from xml file -
readColorMapXml
Get color map from xml file- Throws:
Exception
-
reloadData
public void reloadData()reload- Specified by:
reloadData
in interfaceDataSource
- Overrides:
reloadData
in classFilesDataSource
-
initAfterUnpersistence
public void initAfterUnpersistence()Initialize after we have been unpersisted- Specified by:
initAfterUnpersistence
in interfaceDataSource
- Overrides:
initAfterUnpersistence
in classFilesDataSource
-
readImage
Read the image- Parameters:
url
- image urlbaseUrl
- Where the kml came from_- Returns:
- The image
-
readBytes
Utility to read the bytes from the file or url- Parameters:
path
- file or url- Returns:
- bytes
- Throws:
Exception
- On badness
-
getInputStream
Create the input stream. Handle the case when it is a zip file- Parameters:
path
- file or url- Returns:
- input stream to kml file
- Throws:
Exception
- On badness
-
parseJSON
Get the kml root element- Parameters:
jsonUrl
- json url- Throws:
Exception
- On badness
-
parseJSONHead
Get the time list information- Parameters:
jsonUrl
- json url- Throws:
Exception
- On badness
-
parseJSONModel
public HashMap parseJSONModel(org.json.simple.JSONArray coords, org.json.simple.JSONObject probJSON) parsing the json object coordinate and properties -
jsonObjToString
build the json object string -
getAllDateTimes
Get all the times for the given DataChoice- Specified by:
getAllDateTimes
in interfaceDataSource
- Overrides:
getAllDateTimes
in classDataSourceImpl
- Parameters:
dataChoice
- DataChoice in question- Returns:
- List of all times for that choice
-
getAllDateTimes
Try to merge children up into parents of only one child- Specified by:
getAllDateTimes
in interfaceDataSource
- Overrides:
getAllDateTimes
in classDataSourceImpl
- Returns:
- array of DateTimes (may be null)
-
doMakeDataChoices
protected void doMakeDataChoices()Create the data choices associated with this source.- Overrides:
doMakeDataChoices
in classDataSourceImpl
-
expandIfNeeded
Expand the data choice if its a networklink- Specified by:
expandIfNeeded
in interfaceDataSource
- Overrides:
expandIfNeeded
in classDataSourceImpl
- Parameters:
parent
- data choice
-
getDataInner
protected Data getDataInner(DataChoice dataChoice, DataCategory category, DataSelection dataSelection, Hashtable requestProperties) throws VisADException, RemoteException Actually get the data identified by the given DataChoce. The default is to call the getDataInner that does not take the requestProperties. This allows other, non unidata.data DataSource-s (that follow the old API) to work.- Overrides:
getDataInner
in classDataSourceImpl
- Parameters:
dataChoice
- The data choice that identifies the requested data.category
- The data category of the request.dataSelection
- Identifies any subsetting of the data.requestProperties
- Hashtable that holds any detailed request properties.- Returns:
- The visad.Data object
- Throws:
RemoteException
- Java RMI problemVisADException
- VisAD problem
-
getTimeIndexWithBounds
-
shouldCache
See if this DataSource should cache or not- Overrides:
shouldCache
in classDataSourceImpl
- Parameters:
data
- Data to cache- Returns:
- false
-
doMakeDateTimes
Create a list of times for this data source. Since shapefiles don't have any times, return an empty List.- Overrides:
doMakeDateTimes
in classDataSourceImpl
- Returns:
- an empty List
-