docs: static public ImageryMetaDataResource getInstanceFromJSON(final JSONObject a_jsonObject, final JSONObject parent) throws Exception
  	{
  		final ImageryMetaDataResource result = new ImageryMetaDataResource();
  
  		if(a_jsonObject==null) {
  			throw new Exception("JSON to parse is null");
  		}
  		result.copyright = parent.getString(COPYRIGHT);
  
  		if(a_jsonObject.has(IMAGE_HEIGHT)) {
  			result.m_imageHeight = a_jsonObject.getInt(IMAGE_HEIGHT);
  		}
  		if(a_jsonObject.has(IMAGE_WIDTH)) {
  			result.m_imageWidth = a_jsonObject.getInt(IMAGE_WIDTH);
  		}
  		if(a_jsonObject.has(ZOOM_MIN)) {
  			result.m_zoomMin = a_jsonObject.getInt(ZOOM_MIN);
  		}
  		if(a_jsonObject.has(ZOOM_MAX)) {
  			result.m_zoomMax = a_jsonObject.getInt(ZOOM_MAX);
  		}
  		result.m_imageUrl = a_jsonObject.getString(IMAGE_URL);
  		if(result.m_imageUrl!=null && result.m_imageUrl.matches(".*?\\{.*?\\}.*?")) {
  			result.m_imageUrl = result.m_imageUrl.replaceAll("\\{.*?\\}", "%s");
  		}
  
  		final JSONArray subdomains = a_jsonObject.getJSONArray(IMAGE_URL_SUBDOMAINS);
  		if(subdomains!=null && subdomains.length()>=1)
  		{
  			result.m_imageUrlSubdomains = new String[subdomains.length()];
  			for(int i=0;i<subdomains.length();i++)
  			{
  				result.m_imageUrlSubdomains[i] = subdomains.getString(i);
  			}
  
  		}
  
  		result.m_isInitialised = true;
  
  		return result;
  	}