コード例 #1
0
ファイル: t_unit.php プロジェクト: rmourembles/resto-test
 /**
  * @depends testGetCollection
  */
 public function testCollection_toFeatureId()
 {
     $this->initContext();
     $collection = new RestoCollection('Landsat', $this->context, $this->admin, array('autoload' => true));
     $this->assertEquals('c5dc1f32-002d-5ee9-bd4a-c690461eb734', $collection->toFeatureId('LANDSAT5_TM_XS_20110520_N2A_France-MetropoleD0005H0003'));
 }
コード例 #2
0
ファイル: RestoModel.php プロジェクト: rmourembles/resto
 /**
  * Store feature within {collection}.features table following the class model
  * 
  * @param array $data : array (MUST BE GeoJSON in abstract Model)
  * @param RestoCollection $collection
  * 
  */
 public function storeFeature($data, $collection)
 {
     /*
      * Assume input file or stream is a JSON Feature
      */
     if (!RestoGeometryUtil::isValidGeoJSONFeature($data)) {
         RestoLogUtil::httpError(500, 'Invalid feature description');
     }
     /*
      * Remap properties between RESTo model and input
      * GeoJSON Feature file 
      */
     $properties = $this->mapInputProperties($data);
     /*
      * Add collection to $properties to initialize facet counts on collection
      */
     $properties['collection'] = isset($properties['collection']) ? $properties['collection'] : $collection->name;
     /*
      * Compute unique identifier
      */
     if (!isset($data['id']) || !RestoUtil::isValidUUID($data['id'])) {
         $featureIdentifier = $collection->toFeatureId(isset($properties['productIdentifier']) ? $properties['productIdentifier'] : md5(microtime() . rand()));
     } else {
         $featureIdentifier = $data['id'];
     }
     /*
      * First check if feature is already in database
      * (do this before getKeywords to avoid iTag process)
      */
     if ($collection->context->dbDriver->check(RestoDatabaseDriver::FEATURE, array('featureIdentifier' => $featureIdentifier))) {
         RestoLogUtil::httpError(500, 'Feature ' . $featureIdentifier . ' already in database');
     }
     /*
      * Tag module
      */
     $keywords = array();
     if (isset($collection->context->modules['Tag'])) {
         $tagger = RestoUtil::instantiate($collection->context->modules['Tag']['className'], array($collection->context, $collection->user));
         $keywords = $tagger->getKeywords($properties, $data['geometry']);
     }
     /*
      * Store feature
      */
     $collection->context->dbDriver->store(RestoDatabaseDriver::FEATURE, array('collection' => $collection, 'featureArray' => array('type' => 'Feature', 'id' => $featureIdentifier, 'geometry' => $data['geometry'], 'properties' => array_merge($properties, array('keywords' => $keywords)))));
     return new RestoFeature($collection->context, $collection->user, array('featureIdentifier' => $featureIdentifier));
 }