use composite position

This commit is contained in:
aina-esokia
2018-05-03 17:25:37 +04:00
parent 81b3e75d3d
commit c905ca303f
4 changed files with 61 additions and 10 deletions

View File

@@ -81,6 +81,30 @@ class GpsPosition
&& $this->latitude_ref !== null; && $this->latitude_ref !== null;
} }
public function isCompleteComposite()
{
return $this->longitude !== null
&& $this->latitude !== null;
}
public function getCompositeLongitude()
{
if ($this->longitude === null) {
return null;
}
return $this->longitude ;
}
public function getCompositeLatitude()
{
if ($this->latitude === null) {
return null;
}
return $this->latitude;
}
public function getSignedLongitude() public function getSignedLongitude()
{ {
if ($this->longitude === null) { if ($this->longitude === null) {

View File

@@ -155,9 +155,9 @@ SQL;
// Push this tag into object // Push this tag into object
$position->set($tag_name, $value); $position->set($tag_name, $value);
// Try to output complete position // Try to output complete position
if ($position->isComplete()) { if ($position->isCompleteComposite()) {
$lon = $position->getSignedLongitude(); $lon = $position->getCompositeLongitude();
$lat = $position->getSignedLatitude(); $lat = $position->getCompositeLatitude();
$records[$id]['metadata_tags']['Longitude'] = $lon; $records[$id]['metadata_tags']['Longitude'] = $lon;
$records[$id]['metadata_tags']['Latitude'] = $lat; $records[$id]['metadata_tags']['Latitude'] = $lat;

View File

@@ -758,26 +758,24 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
public function getPositionFromTechnicalInfos() public function getPositionFromTechnicalInfos()
{ {
$positionTechnicalField = [ $positionTechnicalField = [
media_subdef::TC_DATA_LATITUDE_REF,
media_subdef::TC_DATA_LATITUDE, media_subdef::TC_DATA_LATITUDE,
media_subdef::TC_DATA_LONGITUDE_REF,
media_subdef::TC_DATA_LONGITUDE media_subdef::TC_DATA_LONGITUDE
]; ];
$position = new GpsPosition(); $position = [];
foreach($positionTechnicalField as $field){ foreach($positionTechnicalField as $field){
$fieldData = $this->get_technical_infos($field); $fieldData = $this->get_technical_infos($field);
if($fieldData){ if($fieldData){
$position->set($field, $fieldData->getValue()); $position[$field] = $fieldData->getValue();
} }
} }
if($position->isComplete()){ if(count($position) == 2){
return [ return [
'isCoordComplete' => 1, 'isCoordComplete' => 1,
'latitude' => $position->getSignedLatitude(), 'latitude' => $position[media_subdef::TC_DATA_LATITUDE],
'longitude' => $position->getSignedLongitude() 'longitude' => $position[media_subdef::TC_DATA_LONGITUDE]
]; ];
} }

View File

@@ -20,6 +20,13 @@ class GpsPositionTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($position->isComplete()); $this->assertFalse($position->isComplete());
} }
public function testIsCompleteCompositeWithSingleSet()
{
$position = new GpsPosition();
$position->set('Latitude', 48.856578);
$this->assertFalse($position->isCompleteComposite());
}
public function testIsCompleteWithAllSet() public function testIsCompleteWithAllSet()
{ {
$position = new GpsPosition(); $position = new GpsPosition();
@@ -30,6 +37,14 @@ class GpsPositionTest extends \PHPUnit_Framework_TestCase
$this->assertTrue($position->isComplete()); $this->assertTrue($position->isComplete());
} }
public function testIsCompleteCompositeWithAllSet()
{
$position = new GpsPosition();
$position->set('Latitude', 48.856578);
$position->set('Longitude', 2.351828);
$this->assertTrue($position->isCompleteComposite());
}
/** /**
* @dataProvider getSupportedTagNames * @dataProvider getSupportedTagNames
*/ */
@@ -89,6 +104,13 @@ class GpsPositionTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(-2.351828, $position->getSignedLongitude()); $this->assertEquals(-2.351828, $position->getSignedLongitude());
} }
public function testGetCompositeLongitude()
{
$position = new GpsPosition();
$position->set('Longitude', -2.351828);
$this->assertEquals(-2.351828, $position->getCompositeLongitude());
}
public function testGetSignedLatitude() public function testGetSignedLatitude()
{ {
$position = new GpsPosition(); $position = new GpsPosition();
@@ -109,4 +131,11 @@ class GpsPositionTest extends \PHPUnit_Framework_TestCase
$position->set('LatitudeRef', 'S'); $position->set('LatitudeRef', 'S');
$this->assertEquals(-48.856578, $position->getSignedLatitude()); $this->assertEquals(-48.856578, $position->getSignedLatitude());
} }
public function testGetCompositeLatitude()
{
$position = new GpsPosition();
$position->set('Latitude', -48.856578);
$this->assertEquals(-48.856578, $position->getCompositeLatitude());
}
} }