=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2014-09-29 18:29:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnit.java 2014-10-01 11:05:44 +0000 @@ -90,6 +90,7 @@ private static final Comparator COMPARATOR = new IdentifiableObjectNameComparator(); + private static final Pattern JSON_POINT_PATTERN = Pattern.compile( "(\\[.*?\\])" ); private static final Pattern JSON_COORDINATE_PATTERN = Pattern.compile( "(\\[{3}.*?\\]{3})" ); private static final Pattern COORDINATE_PATTERN = Pattern.compile( "([\\-0-9.]+,[\\-0-9.]+)" ); @@ -400,7 +401,8 @@ if ( coordinates != null && !coordinates.trim().isEmpty() ) { - Matcher jsonMatcher = JSON_COORDINATE_PATTERN.matcher( coordinates ); + Matcher jsonMatcher = isPoint() ? + JSON_POINT_PATTERN.matcher( coordinates ) : JSON_COORDINATE_PATTERN.matcher( coordinates ); while ( jsonMatcher.find() ) { === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java 2014-09-29 19:53:06 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitService.java 2014-10-01 11:05:44 +0000 @@ -200,6 +200,14 @@ Collection getOrganisationUnitByNameIgnoreCase( String name ); /** + * Returns all OrganisationUnits exactly matching the given names. + * + * @param names names of OrganisationUnits to return. + * @return the OrganisationUnits matching the given names. + */ + Collection getOrganisationUnitsByNames( Collection names ); + + /** * Returns all root OrganisationUnits. A root OrganisationUnit is an * OrganisationUnit with no parent/the parent set to null. * === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitStore.java 2014-09-29 18:29:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/organisationunit/OrganisationUnitStore.java 2014-10-01 11:05:44 +0000 @@ -59,6 +59,14 @@ OrganisationUnit getByUuid( String uuid ); /** + * Retrieves all OrganisationUnits matching the given names. + * + * @param names names of the OrganisationUnits to return. + * @return all OrganisationUnits matching the given names. + */ + Collection getByNames( Collection names ); + + /** * Returns all OrganisationUnits by status. * * @param active Get active or inactive === modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitTest.java' --- dhis-2/dhis-api/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitTest.java 2014-08-15 07:40:20 +0000 +++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitTest.java 2014-10-10 14:45:25 +0000 @@ -102,6 +102,7 @@ { OrganisationUnit unit = new OrganisationUnit(); unit.setCoordinates( multiPolygonCoordinates ); + unit.setFeatureType( "MultiPolygon" ); assertEquals( 3, unit.getCoordinatesAsList().size() ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java 2014-09-29 19:53:06 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java 2014-10-01 11:05:44 +0000 @@ -248,6 +248,11 @@ return organisationUnitStore.getAllEqNameIgnoreCase( name ); } + @Override public Collection getOrganisationUnitsByNames( Collection names ) + { + return i18n( i18nService, organisationUnitStore.getByNames( names ) ); + } + public Collection getRootOrganisationUnits() { return i18n( i18nService, organisationUnitStore.getRootOrganisationUnits()); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/hibernate/HibernateOrganisationUnitStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/hibernate/HibernateOrganisationUnitStore.java 2014-09-29 18:29:02 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/hibernate/HibernateOrganisationUnitStore.java 2014-10-10 14:24:37 +0000 @@ -89,6 +89,16 @@ } @Override + @SuppressWarnings( "unchecked" ) + public Collection getByNames( Collection names ) + { + Query query = getQuery( "from OrganisationUnit where name in :names" ); + query.setParameterList( "names", names ); + + return query.list(); + } + + @Override @SuppressWarnings("unchecked") public Collection getAllOrganisationUnitsByStatus( boolean active ) { === added directory 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml' === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/DefaultGmlImportService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/DefaultGmlImportService.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/DefaultGmlImportService.java 2014-10-10 14:07:30 +0000 @@ -0,0 +1,160 @@ +package org.hisp.dhis.dxf2.gml; + +/* + * Copyright (c) 2004-2014, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import com.google.common.base.Function; +import com.google.common.collect.Maps; +import org.hisp.dhis.dxf2.metadata.ImportOptions; +import org.hisp.dhis.dxf2.metadata.ImportService; +import org.hisp.dhis.dxf2.metadata.MetaData; +import org.hisp.dhis.dxf2.render.RenderService; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.scheduling.TaskId; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.DefaultResourceLoader; +import org.springframework.transaction.annotation.Transactional; + +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.Map; + +/** + * @author Halvdan Hoem Grelland + */ +public class DefaultGmlImportService + implements GmlImportService +{ + private static final String GML_TO_DXF_TRANSFORM = "gml/gml2dxf2.xsl"; + private static final ClassLoader CL = new DefaultResourceLoader().getClassLoader(); + + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + @Autowired + private ImportService importService; + + @Autowired + private RenderService renderService; + + @Autowired + private OrganisationUnitService organisationUnitService; + + // ------------------------------------------------------------------------- + // GmlImportService implementation + // ------------------------------------------------------------------------- + + @Override + public MetaData fromGml( InputStream inputStream ) + throws IOException, TransformerException + { + InputStream dxfStream = transformGml( inputStream ); + + MetaData metaData = renderService.fromXml( dxfStream, MetaData.class ); + + dxfStream.close(); + + Map namedMap = Maps.uniqueIndex( metaData.getOrganisationUnits(), + new Function() + { + public String apply( OrganisationUnit organisationUnit ) + { + return organisationUnit.getName(); + } + } + ); + + // Fetch persisted OrganisationUnits and merge imported GML properties + Collection persistedOrgUnits = organisationUnitService.getOrganisationUnitsByNames( namedMap.keySet() ); + + for( OrganisationUnit persisted : persistedOrgUnits ) + { + OrganisationUnit unit = namedMap.get( persisted.getName() ); + + if( unit == null || unit.getCoordinates() == null || unit.getFeatureType() == null ) + { + continue; + } + + String coordinates = unit.getCoordinates(), + featureType = unit.getFeatureType(); + + unit.mergeWith( persisted ); + + unit.setCoordinates( coordinates ); + unit.setFeatureType( featureType ); + + if( persisted.getParent() != null ) + { + OrganisationUnit parent = new OrganisationUnit(); + parent.setUid( persisted.getParent().getUid() ); + unit.setParent( parent ); + } + } + + return metaData; + } + + @Transactional + @Override + public void importGml( InputStream inputStream, String userUid, ImportOptions importOptions, TaskId taskId ) + throws IOException, TransformerException + { + importService.importMetaData( userUid, fromGml( inputStream ), importOptions, taskId ); + } + + // ------------------------------------------------------------------------- + // Supportive methods + // ------------------------------------------------------------------------- + + private InputStream transformGml( InputStream input ) + throws IOException, TransformerException + { + StreamSource gml = new StreamSource( input ); + StreamSource xsl = new StreamSource( CL.getResourceAsStream( GML_TO_DXF_TRANSFORM ) ); + + ByteArrayOutputStream output = new ByteArrayOutputStream(); + + TransformerFactory.newInstance().newTransformer( xsl ).transform( gml, new StreamResult( output ) ); + + xsl.getInputStream().close(); + gml.getInputStream().close(); + + return new ByteArrayInputStream( output.toByteArray() ); + } + +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/GmlConversionUtils.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/GmlConversionUtils.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/GmlConversionUtils.java 2014-10-10 11:19:52 +0000 @@ -0,0 +1,137 @@ +package org.hisp.dhis.dxf2.gml; + +/* + * Copyright (c) 2004-2014, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.apache.commons.math.util.MathUtils; + +import java.text.NumberFormat; +import java.text.ParseException; +import java.util.Locale; + +/** + * Methods to parse various GML coordinate formats and output the DHIS 2 internal representation + * @author Halvdan Hoem Grelland + */ +public class GmlConversionUtils +{ + private static final NumberFormat NF = NumberFormat.getInstance( Locale.ENGLISH ); + + /** + * Parses a gml:coordinates element and outputs the DHIS 2 internal string representation. + * + * @param coordinates contents of gml:coordinates element to parse. + * @param precision decimal precision to use in output. + * @return a string representation of the coordinates. + * @throws ParseException + */ + public static String gmlCoordinatesToString( String coordinates, String precision ) + throws ParseException + { + int nDecimals = Integer.parseInt( precision ); + + StringBuilder sb = new StringBuilder(); + + for ( String c : coordinates.trim().split( "\\s" ) ) + { + String[] p = c.split( "," ); + + String lat = parseCoordinate( p[0], nDecimals, NF ), + lon = parseCoordinate( p[1], nDecimals, NF ); + + sb.append( "[" ).append( lat ).append( "," ).append( lon ).append( "]," ); + } + + return sb.length() > 0 ? sb.deleteCharAt( sb.length() - 1 ).toString() : ""; + } + + /** + * Parses a gml:pos element and outputs the DHIS 2 internal string representation. + * + * @param pos contents of gml:pos element to parse. + * @param precision decimal precision to use in output. + * @return a string representation of the point. + * @throws ParseException + */ + public static String gmlPosToString( String pos, String precision ) + throws ParseException + { + int nDecimals = Integer.parseInt( precision ); + + String[] c = pos.trim().split( "\\s", 2 ); + + if( c.length != 2 ) + { + return ""; + } + + String lat = parseCoordinate( c[0], nDecimals, NF ), + lon = parseCoordinate( c[1], nDecimals, NF ); + + return "[" + lat + "," + lon + "]"; + } + + /** + * Parses a gml:posList element and outputs the DHIS 2 internal string representation. + * + * @param posList contents of gml:posList element to parse. + * @param precision decimal precision to use in output. + * @return a string representation of the posList. + * @throws ParseException + */ + public static String gmlPosListToString( String posList, String precision ) + throws ParseException + { + int nDecimals = Integer.parseInt( precision ); + + StringBuilder sb = new StringBuilder(); + + String[] c = posList.trim().split( "\\s" ); + + if( c.length % 2 != 0 ) + { + return ""; // Badly formed gml:posList + } + + for( int i = 0 ; i < c.length ; i += 2 ) + { + String lat = parseCoordinate( c[i], nDecimals, NF ), + lon = parseCoordinate( c[i + 1], nDecimals, NF ); + + sb.append( "[" ).append( lat ).append(",").append( lon ).append( "]," ); + } + + return sb.length() > 0 ? sb.deleteCharAt( sb.length() - 1 ).toString() : ""; + } + + private static String parseCoordinate( String number, int precision, NumberFormat nf ) + throws ParseException + { + return Double.toString( MathUtils.round( nf.parse( number).doubleValue(), precision ) ); + } +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/GmlImportService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/GmlImportService.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/gml/GmlImportService.java 2014-10-10 14:07:30 +0000 @@ -0,0 +1,51 @@ +package org.hisp.dhis.dxf2.gml; + +/* + * Copyright (c) 2004-2014, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.hisp.dhis.dxf2.metadata.ImportOptions; +import org.hisp.dhis.dxf2.metadata.MetaData; +import org.hisp.dhis.scheduling.TaskId; + +import javax.xml.transform.TransformerException; +import java.io.IOException; +import java.io.InputStream; + +/** + * @author Halvdan Hoem Grelland + */ +public interface GmlImportService +{ + String ID = GmlImportService.class.getName(); + + MetaData fromGml( InputStream inputStream ) + throws IOException, TransformerException; + + public void importGml( InputStream inputStream, String userUid, ImportOptions importOptions, TaskId taskId ) + throws IOException, TransformerException; +} === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/render/RenderService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/render/RenderService.java 2014-03-27 11:55:28 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/render/RenderService.java 2014-10-07 14:04:33 +0000 @@ -28,6 +28,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.fasterxml.jackson.core.type.TypeReference; + import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/META-INF/dhis/beans.xml 2014-10-08 06:12:13 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/META-INF/dhis/beans.xml 2014-10-09 10:18:31 +0000 @@ -3,6 +3,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> + + === added directory 'dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/gml' === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/gml/gml2dxf2.xsl' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/gml/gml2dxf2.xsl 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/resources/gml/gml2dxf2.xsl 2014-10-10 14:07:30 +0000 @@ -0,0 +1,87 @@ + + + +4 + + + + + + + + + + + + + + + Polygon + + [[[ + + + ]]] + + , + + + + + + MultiPolygon + + [ + + ] + + + + + Point + + + + + + + + [[ + + + ]] + + , + + + + + + + + + + + + + + true + + + + + + + + + + + + === added directory 'dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/gml' === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/gml/GmlImportServiceTest.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/gml/GmlImportServiceTest.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/gml/GmlImportServiceTest.java 2014-10-10 14:07:30 +0000 @@ -0,0 +1,108 @@ +package org.hisp.dhis.dxf2.gml; + +/* + * Copyright (c) 2004-2014, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.hisp.dhis.DhisTest; +import org.hisp.dhis.dxf2.metadata.MetaData; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.junit.Test; + +import java.io.InputStream; +import java.util.Collection; +import java.util.HashMap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * @author Halvdan Hoem Grelland + */ +public class GmlImportServiceTest + extends DhisTest +{ + private GmlImportService gmlImportService; + + private InputStream inputStream; + + @Override + public void setUpTest() + { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + + gmlImportService = (GmlImportService) getBean( GmlImportService.ID ); + + inputStream = classLoader.getResourceAsStream( "gmlOrgUnits.gml" ); + } + + @Test + public void fromGmlTest() + throws Exception + { + MetaData metaData = gmlImportService.fromGml( inputStream ); + Collection orgUnits = metaData.getOrganisationUnits(); + + assertNotNull( orgUnits ); + + assertEquals( 16, orgUnits.size() ); + + HashMap units = new HashMap<>(); + + for( OrganisationUnit orgUnit : orgUnits ) + { + units.put( orgUnit.getName(), orgUnit ); + } + + assertEquals( 1, units.get( "Bo" ).getCoordinatesAsList().size() ); + assertEquals( 18, units.get( "Bonthe" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Moyamba" ).getCoordinatesAsList().size() ); + assertEquals( 3, units.get( "Pujehun" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Kailahun" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Kenema" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Kono" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Bombali" ).getCoordinatesAsList().size() ); + assertEquals( 3, units.get( "Kambia" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Koinadugu" ).getCoordinatesAsList().size() ); + assertEquals( 9, units.get( "Port Loko" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Tonkolili" ).getCoordinatesAsList().size() ); + assertEquals( 2, units.get( "Western Area" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Ole Johan Dahls Hus" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Blindern" ).getCoordinatesAsList().size() ); + assertEquals( 1, units.get( "Forskningsparken").getCoordinatesAsList().size() ); + + assertEquals( 76, units.get( "Bo" ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); + assertEquals( 7, units.get( "Pujehun" ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); + assertEquals( 7, units.get( "Pujehun" ).getCoordinatesAsList().get( 1 ).getNumberOfCoordinates() ); + assertEquals( 159, units.get( "Pujehun" ).getCoordinatesAsList().get( 2 ).getNumberOfCoordinates() ); + assertEquals( 189, units.get( "Bonthe" ).getCoordinatesAsList().get( 1 ).getNumberOfCoordinates() ); + assertEquals( 1, units.get( "Ole Johan Dahls Hus" ).getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); + assertEquals( 1, units.get( "Blindern").getCoordinatesAsList().get( 0 ).getNumberOfCoordinates() ); + assertEquals( 76, units.get( "Forskningsparken" ).getCoordinatesAsList().get(0).getNumberOfCoordinates() ); + } +} === added file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/resources/gmlOrgUnits.gml' --- dhis-2/dhis-services/dhis-service-dxf2/src/test/resources/gmlOrgUnits.gml 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/test/resources/gmlOrgUnits.gml 2014-09-26 14:04:26 +0000 @@ -0,0 +1,626 @@ + + + + + + -13.30763 + 6.928689 + + + -10.28424 + 10.00043 + + + + + + + + + + -11.870609999999999,8.377969999999999 -11.83278,8.426909999999999 -11.81091,8.431609999999999 -11.775969999999999,8.464449999999999 -11.7593,8.50596 -11.74146,8.524649999999999 -11.7082,8.5265 -11.63707,8.50554 -11.61599,8.51427 -11.5911,8.47231 -11.567209999999999,8.37642 -11.531129999999999,8.33521 -11.46392,8.29433 -11.42815,8.23258 -11.37627,8.17115 -11.36345,8.022069999999999 -11.38152,7.96878 -11.44124,7.95059 -11.488759999999999,7.92937 -11.512829999999999,7.90478 -11.521179999999999,7.88239 -11.49637,7.84925 -11.459289999999999,7.8329 -11.42272,7.78486 -11.42951,7.73304 -11.45659,7.72727 -11.49568,7.7398 -11.529909999999999,7.73467 -11.54969,7.7113 -11.55181,7.69631 -11.56799,7.69718 -11.6103,7.65327 -11.645009999999999,7.59122 -11.67165,7.58101 -11.702959999999999,7.5977 -11.76066,7.61443 -11.76304,7.64152 -11.73705,7.69829 -11.75399,7.70824 -11.77444,7.69286 -11.80033,7.66111 -11.80291,7.63815 -11.87114,7.57895 -11.87956,7.54413 -11.92084,7.52075 -11.93652,7.56823 -11.96874,7.58244 -12.02712,7.59432 -12.055149999999999,7.6384 -12.081289999999999,7.71217 -12.1074,7.7473 -12.14366,7.75388 -12.167579999999999,7.77599 -12.18035,7.80201 -12.18519,7.8459 -12.19636,7.86759 -12.19936,7.88775 -12.1972,7.92656 -12.17428,7.97634 -12.14198,7.99728 -12.03114,8.02645 -11.97279,8.03215 -11.90826,8.005 -11.871689999999999,8.00717 -11.87079,8.032679999999999 -11.89199,8.06563 -11.94816,8.10148 -11.95801,8.12106 -11.95783,8.143829999999999 -11.92554,8.17176 -11.84223,8.18657 -11.86198,8.21624 -11.87466,8.25258 -11.865589999999999,8.28978 -11.88339,8.30747 -11.870609999999999,8.377969999999999 + + + + + 6940101 + Southern + Bo + SL + 37 + 213 + 69401 + SLP002004000000000000 + SLP002001000000000000 + + + + + + + + + + + -12.4815,7.44335 -12.479179999999999,7.43926 -12.47711,7.43857 -12.4755,7.435357 -12.47619,7.43352 -12.48286,7.43467 -12.486549999999999,7.439033 -12.488149999999999,7.443394 -12.48588,7.447056 -12.4815,7.44335 + + + + + + + + + -12.46935,7.772903 -12.44157,7.789555 -12.35194,7.826 -12.33296,7.7949 -12.30898,7.72146 -12.27683,7.69475 -12.23907,7.68213 -12.193949999999999,7.68943 -12.15931,7.72417 -12.14366,7.75388 -12.1074,7.7473 -12.081289999999999,7.71217 -12.055149999999999,7.6384 -12.02712,7.59432 -11.96874,7.58244 -11.93652,7.56823 -11.92084,7.52075 -11.91511,7.41411 -11.85946,7.30437 -11.86369,7.24957 -11.892659999999999,7.21532 -11.93056,7.2041 -11.950659999999999,7.192144 -11.95936,7.195835 -11.99604,7.209963 -12.08722,7.245075 -12.11347,7.256804 -12.12839,7.263472 -12.179679999999999,7.281873 -12.198309999999999,7.290608 -12.21556,7.29544 -12.231479999999999,7.301812 -12.30113,7.329693 -12.33932,7.343026 -12.349729999999999,7.346581 -12.41202,7.367848 -12.429959999999999,7.372446 -12.471439999999999,7.380013 -12.48541,7.382564 -12.51441,7.385785 -12.51694,7.387622 -12.51049,7.389915 -12.501289999999999,7.390831 -12.48127,7.404518 -12.477119999999999,7.407353 -12.4426,7.410326 -12.44237,7.416754 -12.43685,7.418358 -12.4304,7.418815 -12.42787,7.416748 -12.43041,7.411929 -12.421889999999999,7.412844 -12.416169999999999,7.412323 -12.41177,7.411922 -12.41008,7.411049 -12.381629999999999,7.396302 -12.36139,7.389177 -12.33953,7.376771 -12.33447,7.375852 -12.30916,7.385251 -12.30025,7.382319 -12.30003,7.384937 -12.3034,7.388232 -12.30938,7.390301 -12.317209999999999,7.389387 -12.3225,7.386634 -12.334009999999999,7.379983 -12.338609999999999,7.379755 -12.35126,7.390091 -12.364369999999999,7.401803 -12.365679999999999,7.402421 -12.381399999999999,7.409845 -12.390829999999999,7.420178 -12.40601,7.430513 -12.411989999999999,7.432811 -12.42584,7.43119 -12.43937,7.429607 -12.45088,7.425249 -12.457319999999999,7.425711 -12.46308,7.428696 -12.47389,7.441554 -12.474489999999999,7.441899 -12.48033,7.445228 -12.48358,7.449021 -12.48171,7.455557 -12.46674,7.477359 -12.45661,7.4948 -12.45384,7.503981 -12.45062,7.5088 -12.424379999999999,7.529906 -12.412179999999999,7.529598 -12.40596,7.529441 -12.38686,7.536089 -12.37881,7.533332 -12.36546,7.533786 -12.358779999999999,7.536996 -12.35187,7.550764 -12.348879999999999,7.551451 -12.338749999999999,7.545938 -12.332079999999999,7.540198 -12.3261,7.531932 -12.31966,7.526192 -12.3146,7.524123 -12.30701,7.525038 -12.30263,7.528019 -12.30516,7.530086 -12.31897,7.531011 -12.32173,7.532848 -12.3307,7.545705 -12.33622,7.550528 -12.34473,7.55604 -12.351179999999999,7.55742 -12.3544,7.561782 -12.35969,7.562243 -12.36245,7.560408 -12.36396,7.555733 -12.36384,7.547097 -12.36614,7.541819 -12.3696,7.539296 -12.37259,7.539068 -12.375579999999999,7.542282 -12.38202,7.542514 -12.3864,7.54504 -12.38984,7.56019 -12.39237,7.563175 -12.3972,7.564323 -12.39835,7.562029 -12.40572,7.559966 -12.41355,7.560658 -12.41332,7.558362 -12.41224,7.557845 -12.4071,7.555377 -12.39306,7.557437 -12.391679999999999,7.552617 -12.39675,7.548257 -12.42414,7.555612 -12.44163,7.55447 -12.44899,7.55585 -12.45382,7.554474 -12.45797,7.555164 -12.46142,7.558837 -12.46349,7.567559 -12.46118,7.57628 -12.4642,7.585019 -12.46578,7.589592 -12.46923,7.606806 -12.47244,7.61438 -12.48694,7.626318 -12.49131,7.631138 -12.49338,7.636647 -12.492459999999999,7.641695 -12.48901,7.644907 -12.45332,7.666927 -12.45079,7.671746 -12.452629999999999,7.67886 -12.45424,7.678173 -12.45585,7.673354 -12.46,7.668535 -12.4623,7.668766 -12.46437,7.66716 -12.46598,7.663718 -12.48348,7.656151 -12.4844,7.654545 -12.499129999999999,7.647205 -12.50052,7.642156 -12.50535,7.63619 -12.511799999999999,7.639175 -12.51847,7.64675 -12.53412,7.653868 -12.54194,7.665344 -12.54401,7.670907 -12.54424,7.67154 -12.54263,7.679572 -12.53618,7.686684 -12.520759999999999,7.687829 -12.51477,7.691957 -12.51017,7.698381 -12.508319999999999,7.706183 -12.4998,7.725456 -12.48713,7.740827 -12.482989999999999,7.744497 -12.48046,7.74289 -12.47317,7.730702 -12.46987,7.738298 -12.46964,7.744035 -12.47217,7.75069 -12.475619999999999,7.754133 -12.46894,7.772487 -12.46935,7.772903 + + + + + + + + + -12.48949,7.500065 -12.49014,7.519697 -12.484909999999999,7.511794 -12.48698,7.502842 -12.48949,7.500065 + + + + + + + + + -12.477539999999999,7.520742 -12.48007,7.521432 -12.48352,7.526023 -12.48651,7.531762 -12.48582,7.534057 -12.48237,7.533367 -12.47708,7.523496 -12.477539999999999,7.520742 + + + + + + + + + -12.409269999999999,7.415833 -12.41407,7.417203 -12.41521,7.422712 -12.4212,7.423174 -12.4258,7.425241 -12.42212,7.428683 -12.41084,7.428679 -12.390829999999999,7.415587 -12.38416,7.406862 -12.36781,7.402156 -12.36368,7.396753 -12.36598,7.396634 -12.36806,7.396525 -12.384639999999999,7.403897 -12.4044,7.414444 -12.409269999999999,7.415833 + + + + + + + + + -12.46419,7.523722 -12.46902,7.527625 -12.47845,7.54599 -12.47799,7.550121 -12.4559,7.542311 -12.45452,7.533819 -12.460509999999999,7.52418 -12.46419,7.523722 + + + + + + + + + -12.9666,7.568244 -12.99768,7.582923 -12.991,7.58981 -12.988239999999999,7.584074 -12.98318,7.587058 -12.9818,7.591878 -12.963609999999999,7.58936 -12.96062,7.578804 -12.9666,7.568244 + + + + + + + + + -13.007,7.589293 -12.99607,7.594628 -12.995609999999999,7.590956 -12.99745,7.58889 -13.00416,7.588233 -13.007,7.589293 + + + + + + + + + -12.47338,7.584546 -12.47545,7.585235 -12.48051,7.594186 -12.47682,7.599005 -12.47406,7.595791 -12.47176,7.587759 -12.47338,7.584546 + + + + + + + + + -13.00712,7.594624 -13.00689,7.603345 -13.00436,7.604953 -12.99975,7.604266 -12.998139999999999,7.601971 -12.99975,7.598069 -13.00205,7.595543 -13.00712,7.594624 + + + + + + + + + -12.47866,7.604055 -12.50076,7.615536 -12.50168,7.617831 -12.49822,7.619666 -12.48879,7.620581 -12.480729999999999,7.617136 -12.47659,7.611168 -12.47866,7.604055 + + + + + + + + + -12.99009,7.630202 -12.9947,7.631577 -12.99585,7.632954 -12.99539,7.636167 -12.98803,7.641906 -12.98572,7.64076 -12.98365,7.637089 -12.99009,7.630202 + + + + + + + + + -12.52216,7.624261 -12.53712,7.629314 -12.543559999999999,7.636888 -12.550459999999999,7.64997 -12.55138,7.657773 -12.547929999999999,7.658461 -12.53481,7.645836 -12.531359999999999,7.645376 -12.51962,7.636653 -12.51824,7.626097 -12.52216,7.624261 + + + + + + + + + -13.034509999999999,7.621235 -13.04271,7.625168 -13.05362,7.630407 -13.05569,7.634078 -13.05662,7.640275 -13.0557,7.642569 -13.05063,7.639818 -13.0481,7.640278 -13.0412,7.645558 -13.03866,7.645789 -13.03429,7.651987 -13.03015,7.653365 -13.02072,7.661401 -13.016109999999999,7.659796 -13.01404,7.656354 -13.028079999999999,7.651071 -13.03682,7.640512 -13.03797,7.634085 -13.034509999999999,7.621235 + + + + + + + + + -13.06537,7.666432 -13.06629,7.670562 -13.061,7.674236 -13.05479,7.675156 -13.05133,7.673322 -13.05133,7.671716 -13.06537,7.666432 + + + + + + + + + -12.48812,7.533598 -12.49112,7.53314 -12.49273,7.536813 -12.49203,7.543698 -12.489039999999999,7.54737 -12.486969999999999,7.544615 -12.48812,7.533598 + + + + + + + + + -12.53411,7.691732 -12.53618,7.695404 -12.5348,7.699764 -12.52328,7.710317 -12.51177,7.715592 -12.51085,7.713756 -12.513159999999999,7.702972 -12.515919999999999,7.698153 -12.52743,7.693108 -12.53411,7.691732 + + + + + + + + + -12.91229,7.589924 -12.91367,7.59121 -12.905849999999999,7.60131 -12.86534,7.617612 -12.850149999999999,7.618074 -12.836819999999999,7.615862 -12.83358,7.615324 -12.82023,7.622899 -12.81447,7.623358 -12.8101,7.620375 -12.80389,7.620376 -12.798819999999999,7.625655 -12.78708,7.630016 -12.747719999999999,7.624741 -12.72655,7.627725 -12.720789999999999,7.627265 -12.71826,7.624283 -12.70445,7.630249 -12.70077,7.62979 -12.692019999999999,7.636446 -12.68074,7.638281 -12.65727,7.635756 -12.62527,7.641031 -12.59606,7.638199 -12.584989999999999,7.637125 -12.573259999999999,7.623813 -12.57211,7.62037 -12.58039,7.617388 -12.58868,7.61211 -12.59559,7.605686 -12.59599,7.598826 -12.59753,7.598388 -12.6018,7.601326 -12.606629999999999,7.60913 -12.61124,7.608671 -12.61262,7.604999 -12.612159999999999,7.599721 -12.60737,7.599473 -12.60562,7.601655 -12.5995,7.594211 -12.59665,7.594463 -12.59237,7.5988 -12.59075,7.605808 -12.58965,7.607118 -12.5873,7.606832 -12.585459999999999,7.60339 -12.590529999999999,7.591915 -12.58915,7.587325 -12.58592,7.585718 -12.57981,7.585748 -12.5809,7.587492 -12.58506,7.588144 -12.5873,7.591226 -12.58132,7.604765 -12.567729999999999,7.611878 -12.55577,7.612564 -12.54242,7.610496 -12.53022,7.603838 -12.52631,7.604066 -12.5151,7.595597 -12.50353,7.586848 -12.49755,7.580421 -12.498239999999999,7.578585 -12.490869999999999,7.571468 -12.48926,7.567107 -12.49709,7.553339 -12.50239,7.549668 -12.50515,7.550587 -12.51412,7.562754 -12.520339999999999,7.564361 -12.53046,7.561151 -12.53576,7.555644 -12.54013,7.54807 -12.545199999999999,7.547612 -12.54819,7.550596 -12.55141,7.550597 -12.55348,7.540499 -12.552099999999999,7.53499 -12.549799999999999,7.533154 -12.547269999999999,7.538433 -12.53944,7.540955 -12.537369999999999,7.54302 -12.53092,7.554954 -12.527469999999999,7.554493 -12.52172,7.559313 -12.51389,7.557474 -12.512029999999999,7.550851 -12.51182,7.550129 -12.496409999999999,7.532453 -12.4948,7.52419 -12.49549,7.517993 -12.492509999999999,7.510189 -12.49435,7.502386 -12.49918,7.493664 -12.509539999999999,7.485404 -12.52497,7.467964 -12.52796,7.456946 -12.52895,7.443805 -12.5305,7.423204 -12.52912,7.412416 -12.5267,7.405634 -12.525679999999999,7.402773 -12.52683,7.393133 -12.536949999999999,7.39038 -12.55145,7.390153 -12.566179999999999,7.39337 -12.56779,7.397503 -12.56995,7.409493 -12.56426,7.402297 -12.56203,7.407372 -12.56146,7.410794 -12.55996,7.419767 -12.56042,7.428949 -12.5664,7.441116 -12.57422,7.451676 -12.584339999999999,7.459712 -12.60459,7.47165 -12.64645,7.488114 -12.68398,7.502872 -12.72425,7.516184 -12.74658,7.522152 -12.76061,7.523987 -12.76673,7.526203 -12.78087,7.53133 -12.81286,7.53936 -12.82989,7.545784 -12.88841,7.560308 -12.8918,7.56115 -12.93346,7.569172 -12.9475,7.569857 -12.95118,7.571462 -12.94106,7.579039 -12.91965,7.57652 -12.903309999999999,7.577901 -12.8918,7.574691 -12.896409999999999,7.582722 -12.90676,7.584785 -12.91229,7.589924 + + + + + + + 6940102 + Southern + Bonthe + SL + 25 + 89 + 69401 + SLP002002000000000000 + SLP002002000000000000 + + + + + + + + + -11.870609999999999,8.377969999999999 -11.88339,8.30747 -11.865589999999999,8.28978 -11.87466,8.25258 -11.86198,8.21624 -11.84223,8.18657 -11.92554,8.17176 -11.95783,8.143829999999999 -11.95801,8.12106 -11.94816,8.10148 -11.89199,8.06563 -11.87079,8.032679999999999 -11.871689999999999,8.00717 -11.90826,8.005 -11.97279,8.03215 -12.03114,8.02645 -12.14198,7.99728 -12.17428,7.97634 -12.1972,7.92656 -12.19936,7.88775 -12.19636,7.86759 -12.18519,7.8459 -12.18035,7.80201 -12.167579999999999,7.77599 -12.14366,7.75388 -12.15931,7.72417 -12.193949999999999,7.68943 -12.23907,7.68213 -12.27683,7.69475 -12.30898,7.72146 -12.33296,7.7949 -12.35194,7.826 -12.44157,7.789555 -12.46935,7.772903 -12.472849999999999,7.776389 -12.47503,7.781277 -12.47952,7.779603 -12.48644,7.760102 -12.49496,7.748402 -12.5097,7.736702 -12.52696,7.727069 -12.52887,7.724957 -12.53111,7.722481 -12.55874,7.704587 -12.572089999999999,7.69174 -12.57623,7.690363 -12.58015,7.686692 -12.58521,7.684857 -12.60961,7.688073 -12.61467,7.694041 -12.61214,7.699088 -12.60523,7.704595 -12.60546,7.714232 -12.61007,7.709185 -12.61237,7.704137 -12.62411,7.693812 -12.62964,7.694042 -12.63884,7.697485 -12.64667,7.698632 -12.67245,7.708961 -12.68465,7.707814 -12.68608,7.707181 -12.69708,7.702306 -12.70214,7.702077 -12.7056,7.703454 -12.718489999999999,7.718141 -12.73046,7.722041 -12.73644,7.731449 -12.74266,7.736727 -12.74864,7.747511 -12.75094,7.74774 -12.753019999999999,7.74361 -12.755549999999999,7.742462 -12.76476,7.746592 -12.769819999999999,7.755999 -12.774889999999999,7.758753 -12.77835,7.763111 -12.78363,7.769765 -12.78248,7.773437 -12.78755,7.80097 -12.782019999999999,7.806019 -12.77811,7.807855 -12.77604,7.807167 -12.76315,7.817492 -12.75394,7.813363 -12.7491,7.813133 -12.74196,7.816576 -12.730219999999999,7.818182 -12.71641,7.815888 -12.70965,7.817177 -12.720549999999999,7.822312 -12.73529,7.822082 -12.74703,7.820247 -12.75854,7.823458 -12.77627,7.81772 -12.79008,7.810836 -12.79815,7.799262 -12.8032,7.792021 -12.80504,7.793856 -12.8161,7.795461 -12.8283,7.800506 -12.85961,7.822987 -12.87135,7.839504 -12.88678,7.857855 -12.892379999999999,7.863315 -12.89737,7.868177 -12.90704,7.873452 -12.91948,7.871843 -12.925689999999999,7.878265 -12.933299999999999,7.894323 -12.95471,7.914505 -12.92271,7.925067 -12.91793,7.928859 -12.90015,7.942966 -12.88288,7.946641 -12.86285,7.944809 -12.834059999999999,7.934721 -12.81495,7.923941 -12.80851,7.921876 -12.80183,7.923483 -12.8488,7.948712 -12.874359999999999,7.960865 -12.88288,7.976233 -12.88381,7.99619 -12.88532,8.0 -12.90512,8.016848 -12.90887,8.031060999999999 -12.90698,8.065504 -12.9054,8.073546 -12.902889999999999,8.078151 -12.903639999999999,8.081083 -12.9092,8.092288999999999 -12.91609,8.090941 -12.9166,8.099892 -12.92376,8.103989 -12.92819,8.114068 -12.92844,8.118198 -12.929119999999999,8.119536 -12.931929999999999,8.125069 -12.951449999999999,8.1578 -12.953989999999999,8.159394 -12.96119,8.170147999999999 -12.97207,8.179276 -12.97532,8.18408 -12.98156,8.187721 -12.99572,8.207164 -12.99644,8.211752 -12.99257,8.221185999999999 -13.00154,8.237436 -13.01408,8.235766999999999 -13.02215,8.239566999999999 -13.02678,8.240292 -13.03552,8.2368 -13.041969999999999,8.235847 -13.04959,8.238332 -13.05328,8.238522 -13.04198,8.248308 -13.02313,8.251434 -13.00901,8.26403 -12.97949,8.277365 -12.92962,8.292372 -12.92572,8.293543 -12.897309999999999,8.3133 -12.84798,8.40282 -12.82114,8.39748 -12.803599999999999,8.38221 -12.69725,8.38819 -12.67899,8.41261 -12.66602,8.42065 -12.627689999999999,8.4039 -12.60155,8.382569999999999 -12.58514,8.343299999999999 -12.47297,8.333259999999999 -12.44387,8.340529999999999 -12.45293,8.35102 -12.3892,8.391 -12.2982,8.39842 -12.24615,8.39912 -12.12917,8.31683 -12.100709999999999,8.33198 -12.06953,8.37923 -12.03229,8.41112 -11.96607,8.37829 -11.870609999999999,8.377969999999999 + + + + + 6940103 + Southern + Moyamba + SL + 29 + 202 + 69401 + SLP002003000000000000 + SLP002003000000000000 + + + + + + + + + + + -11.5345,6.947704 -11.52402,6.944798 -11.50173,6.93535 -11.49668,6.929371 -11.501049999999999,6.928689 -11.53359,6.946047 -11.5345,6.947704 + + + + + + + + + -11.57687,6.981387 -11.58169,6.983002 -11.58123,6.985527 -11.575469999999999,6.988734 -11.57041,6.988956 -11.573639999999999,6.98345 -11.57687,6.981387 + + + + + + + + + -11.368779999999999,7.589349 -11.36908,7.56844 -11.37823,7.48154 -11.36426,7.45403 -11.35777,7.44845 -11.32757,7.4225 -11.240819999999999,7.38957 -11.1514,7.38272 -11.11546,7.365185 -11.11819,7.363378 -11.12304,7.353746 -11.1348,7.341372 -11.13758,7.335178 -11.13833,7.32116 -11.1452,7.317976 -11.153969999999999,7.306973 -11.166399999999999,7.302634 -11.16871,7.298737 -11.16802,7.29598 -11.17333,7.288873 -11.173109999999999,7.281067 -11.17796,7.273499 -11.17406,7.265227 -11.174989999999999,7.262704 -11.177989999999999,7.260184 -11.18604,7.259511 -11.19687,7.251954 -11.2093,7.248303 -11.21758,7.250614 -11.221719999999999,7.246948 -11.23001,7.246045 -11.23347,7.242378 -11.24221,7.241935 -11.24751,7.238041 -11.25304,7.233459 -11.26017,7.233701 -11.26638,7.236008 -11.27121,7.235098 -11.27651,7.228908 -11.28297,7.21698 -11.28484,7.204126 -11.28968,7.198854 -11.29313,7.198171 -11.29612,7.200013 -11.28989,7.207579 -11.29288,7.211029 -11.29909,7.211498 -11.30207,7.215406 -11.30644,7.216792 -11.31105,7.209682 -11.308299999999999,7.206004 -11.30599,7.198942 -11.30906,7.191889 -11.308109999999999,7.186028 -11.313409999999999,7.178919 -11.31504,7.16836 -11.32563,7.163097 -11.32817,7.15851 -11.3245,7.151156 -11.32658,7.145648 -11.33026,7.145196 -11.337619999999999,7.148422 -11.34268,7.14843 -11.347289999999999,7.144075 -11.34132,7.133963 -11.33076,7.12545 -11.33099,7.121316 -11.325979999999999,7.096969 -11.32759,7.092379 -11.329,7.077685 -11.355219999999999,7.080944 -11.36022,7.079526 -11.36166,7.079117 -11.363111,7.078069 -11.36673,7.075452 -11.36949,7.070634 -11.36904,7.065582 -11.36101,7.056612 -11.35917,7.052017 -11.364269999999999,7.030899 -11.36452,7.021025 -11.37351,7.010935 -11.3811,7.010489 -11.38593,7.00774 -11.390319999999999,6.99351 -11.39378,6.99007 -11.405799999999999,6.991287 -11.40668,6.991375 -11.4077,6.982389 -11.41155,6.976639 -11.42116,6.969614 -11.41925,6.96194 -11.411899999999999,6.949146 -11.41703,6.944675 -11.424709999999999,6.94596 -11.437519999999999,6.944053 -11.450329999999999,6.931916 -11.45917,6.929611 -11.46931,6.932545 -11.482419999999999,6.931876 -11.50126,6.938564 -11.519159999999999,6.946958 -11.53712,6.955381 -11.555859999999999,6.959681 -11.549049999999999,6.959124 -11.58699,6.972033 -11.58699,6.974056 -11.58164,6.973317 -11.5771,6.976794 -11.5573,6.995598 -11.56419,7.001119 -11.572699999999999,6.996768 -11.59019,6.993577 -11.59848,6.988306 -11.60261,6.98946 -11.614319999999999,7.003943 -11.629709999999999,7.022794 -11.640269999999999,7.03452 -11.6554,7.044543 -11.6559,7.044873 -11.73634,7.092735 -11.76504,7.107373 -11.79726,7.123804 -11.86232,7.154642 -11.87914,7.161782 -11.950659999999999,7.192144 -11.93056,7.2041 -11.892659999999999,7.21532 -11.86369,7.24957 -11.85946,7.30437 -11.91511,7.41411 -11.92084,7.52075 -11.87956,7.54413 -11.87114,7.57895 -11.80291,7.63815 -11.80033,7.66111 -11.77444,7.69286 -11.75399,7.70824 -11.73705,7.69829 -11.76304,7.64152 -11.76066,7.61443 -11.702959999999999,7.5977 -11.67165,7.58101 -11.645009999999999,7.59122 -11.6103,7.65327 -11.56799,7.69718 -11.55181,7.69631 -11.532859999999999,7.68094 -11.5274,7.66214 -11.52754,7.59829 -11.5234,7.59188 -11.50459,7.58815 -11.48096,7.60429 -11.463749999999999,7.62661 -11.44317,7.63902 -11.38913,7.64009 -11.37541,7.63011 -11.36852,7.6073 -11.368779999999999,7.589349 + + + + + + + 6940104 + Southern + Pujehun + SL + 28 + 121 + 69401 + SLP002001000000000000 + + + + + + + + + -11.00916,8.385389999999999 -10.98623,8.41113 -10.95767,8.41478 -10.923489999999999,8.4075 -10.866059999999999,8.423959999999999 -10.817489999999999,8.39852 -10.72328,8.43692 -10.6658,8.44196 -10.65279,8.441087 -10.65713,8.424212 -10.65347,8.416162 -10.652139999999999,8.400311 -10.65286,8.389749999999999 -10.6531,8.387915 -10.65656,8.38517 -10.66441,8.38221 -10.66928,8.375107 -10.67528,8.370991999999999 -10.69191,8.363925999999999 -10.69607,8.359575 -10.69979,8.347416 -10.70191,8.332955999999999 -10.70607,8.3248 -10.71629,8.304755999999999 -10.712199999999999,8.282470999999999 -10.71705,8.278123 -10.71892,8.27101 -10.714079999999999,8.270536999999999 -10.700699999999999,8.273251999999999 -10.70018,8.293456 -10.69762,8.303322 -10.69138,8.307895 -10.68788,8.322578999999999 -10.67399,8.340906 -10.66282,8.340904 -10.65668,8.340903 -10.633279999999999,8.334555 -10.597099999999999,8.33226 -10.58646,8.325988 -10.58234,8.311439 -10.57958,8.307985 -10.5676,8.307254 -10.560919999999999,8.305163 -10.55354,8.307663 -10.521179999999999,8.330966 -10.512169999999999,8.335984 -10.49043,8.35542 -10.484159999999999,8.367566999999999 -10.471439999999999,8.376702999999999 -10.46471,8.388389 -10.46343,8.389115 -10.45269,8.39523 -10.44575,8.40347 -10.43134,8.429822 -10.42556,8.435999 -10.41724,8.440557999999999 -10.408429999999999,8.450168 -10.40145,8.465526 -10.3938,8.476058 -10.3896,8.487753 -10.38597,8.492884999999999 -10.3727,8.487056 -10.363989999999999,8.48814 -10.3534,8.491638 -10.34689,8.496069 -10.33557,8.500842 -10.33141,8.502891 -10.32173,8.498944 -10.301959999999999,8.488676999999999 -10.28686,8.484799 -10.28424,8.465844 -10.29137,8.405934999999999 -10.28433,8.376286 -10.28922,8.362067 -10.289949999999999,8.361209 -10.301959999999999,8.346962 -10.30498,8.340774 -10.30826,8.327699 -10.31386,8.264098 -10.31338,8.256522 -10.313129999999999,8.252636 -10.30282,8.234918 -10.30195,8.220909 -10.304779999999999,8.201404999999999 -10.33045,8.177854999999999 -10.336959999999999,8.160202999999999 -10.350569999999999,8.155201999999999 -10.36121,8.144221999999999 -10.36747,8.142473 -10.371409999999999,8.145079 -10.37832,8.145797 -10.38455,8.143986999999999 -10.396789999999999,8.136691 -10.41226,8.135954 -10.43227,8.135 -10.43665,8.135477 -10.45181,8.145638999999999 -10.458259999999999,8.146354 -10.48756,8.142386999999999 -10.50113,8.140549999999999 -10.514519999999999,8.134172 -10.523999999999999,8.124565 -10.56778,8.052410999999999 -10.57656,8.043718999999999 -10.5851,8.039158 -10.5934,8.037350999999999 -10.60604,8.032037 -10.60361,8.0 -10.603745,7.939139 -10.60384,7.896407 -10.60413,7.770212 -10.62888,7.76645 -10.64155,7.762811 -10.652369999999999,7.76192 -10.65606,7.759405 -10.65884,7.753676 -10.66391,7.7491 -10.68581,7.739516 -10.69452,7.730555 -10.70429,7.712943 -10.71698,7.702418 -10.718109999999999,7.70025 -10.72322,7.690501 -10.72969,7.682255 -10.73868,7.674933 -10.746079999999999,7.66187 -10.76431,7.64562 -10.76914,7.644255 -10.78069,7.629136 -10.786,7.620887 -10.78927,7.601158 -10.78997,7.59634 -10.7932,7.592446 -10.811159999999999,7.592028 -10.811909999999999,7.590048 -10.81643,7.59278 -10.87049,7.65634 -10.88753,7.66902 -10.90761,7.66237 -10.93642,7.66169 -10.9511,7.66931 -10.96327,7.69662 -10.9628,7.71381 -10.94448,7.74768 -10.94528,7.76587 -10.95714,7.77951 -10.97296,7.78701 -10.99475,7.78494 -11.026809999999999,7.82621 -11.08277,7.86384 -11.09003,7.89966 -11.08064,7.92007 -11.01955,8.00613 -10.95641,8.14809 -10.90179,8.24079 -10.90276,8.26013 -10.92356,8.28081 -10.940849999999999,8.28011 -10.96645,8.26026 -10.98044,8.26106 -10.99234,8.2737 -11.005929999999999,8.33521 -11.00916,8.385389999999999 + + + + + 6940201 + Eastern + Kailahun + SL + 47 + 212 + 69402 + SLP003002000000000000 + SLP003001000000000000 + + + + + + + + + -11.61599,8.51427 -11.59993,8.53965 -11.56962,8.5606 -11.52544,8.55659 -11.442629999999999,8.56347 -11.396699999999999,8.55396 -11.3612,8.51759 -11.32118,8.51172 -11.30597,8.497109999999999 -11.29316,8.47084 -11.292439999999999,8.425219999999999 -11.279629999999999,8.394069999999999 -11.22634,8.35441 -11.215949999999999,8.3542 -11.170199999999999,8.37678 -11.082599999999999,8.353719999999999 -11.04392,8.36058 -11.00916,8.385389999999999 -11.005929999999999,8.33521 -10.99234,8.2737 -10.98044,8.26106 -10.96645,8.26026 -10.940849999999999,8.28011 -10.92356,8.28081 -10.90276,8.26013 -10.90179,8.24079 -10.95641,8.14809 -11.01955,8.00613 -11.08064,7.92007 -11.09003,7.89966 -11.08277,7.86384 -11.026809999999999,7.82621 -10.99475,7.78494 -10.97296,7.78701 -10.95714,7.77951 -10.94528,7.76587 -10.94448,7.74768 -10.9628,7.71381 -10.96327,7.69662 -10.9511,7.66931 -10.93642,7.66169 -10.90761,7.66237 -10.88753,7.66902 -10.87049,7.65634 -10.81643,7.59278 -10.811909999999999,7.590048 -10.81394,7.584691 -10.81901,7.579424 -10.81534,7.574137 -10.821569999999999,7.564052 -10.83286,7.563619 -10.83403,7.557425 -10.83841,7.553075 -10.84165,7.546655 -10.849489999999999,7.540247 -10.86677,7.529269 -10.869790999999999,7.527939 -10.869999999999999,7.527847 -10.885429999999999,7.521048 -10.896039999999999,7.510513 -10.90203,7.507083 -10.90779,7.505949 -10.91517,7.49862 -10.9207,7.498403 -10.9262,7.507595 -10.928039999999999,7.509206 -10.93103,7.508295 -10.93518,7.502565 -10.94924,7.496169 -10.96054,7.485404 -10.9703,7.479271 -10.97183,7.478313 -10.97023,7.47349 -10.97438,7.469367 -11.00043,7.448534 -11.00505,7.441657 -11.01725,7.436173 -11.01933,7.433653 -11.02693,7.431832 -11.028549999999999,7.424949 -11.035,7.422207 -11.04147,7.411891 -11.05414,7.401816 -11.054869999999999,7.401561 -11.06451,7.398165 -11.07464,7.392446 -11.08684,7.389256 -11.09237,7.389956 -11.09791,7.380325 -11.10782,7.370244 -11.11546,7.365185 -11.1514,7.38272 -11.240819999999999,7.38957 -11.32757,7.4225 -11.35777,7.44845 -11.36426,7.45403 -11.37823,7.48154 -11.36908,7.56844 -11.368779999999999,7.589349 -11.36852,7.6073 -11.37541,7.63011 -11.38913,7.64009 -11.44317,7.63902 -11.463749999999999,7.62661 -11.48096,7.60429 -11.50459,7.58815 -11.5234,7.59188 -11.52754,7.59829 -11.5274,7.66214 -11.532859999999999,7.68094 -11.55181,7.69631 -11.54969,7.7113 -11.529909999999999,7.73467 -11.49568,7.7398 -11.45659,7.72727 -11.42951,7.73304 -11.42272,7.78486 -11.459289999999999,7.8329 -11.49637,7.84925 -11.521179999999999,7.88239 -11.512829999999999,7.90478 -11.488759999999999,7.92937 -11.44124,7.95059 -11.38152,7.96878 -11.36345,8.022069999999999 -11.37627,8.17115 -11.42815,8.23258 -11.46392,8.29433 -11.531129999999999,8.33521 -11.567209999999999,8.37642 -11.5911,8.47231 -11.61599,8.51427 + + + + + 6940202 + Eastern + Kenema + SL + 49 + 301 + 69402 + SLP003001000000000000 + SLP003002000000000000 + + + + + + + + + -10.63875,9.024319999999999 -10.594783,8.999938999999999 -10.59835,8.973711 -10.59723,8.963367 -10.59817,8.959004999999999 -10.595,8.937856 -10.59202,8.932561 -10.59365,8.926363 -10.593249999999999,8.914953 -10.593019999999999,8.90867 -10.59609,8.889611 -10.59329,8.874706 -10.586779999999999,8.839953 -10.58773,8.834673 -10.58338,8.821562999999999 -10.58524,8.817894 -10.5869,8.804345 -10.583449999999999,8.801577 -10.57998,8.801793999999999 -10.57756,8.799367 -10.5763,8.798105 -10.57052,8.801531 -10.56705,8.80106 -10.56269,8.793692999999999 -10.53575,8.77246 -10.52749,8.757038 -10.52547,8.740951 -10.52318,8.737496 -10.5114,8.738830999999999 -10.51026,8.735379999999999 -10.517659999999999,8.729895 -10.51218,8.722528 -10.506869999999999,8.715382999999999 -10.51035,8.709422999999999 -10.49399,8.70201 -10.48457,8.68934 -10.48276,8.680145 -10.47514,8.680804 -10.46939,8.67458 -10.47868,8.659685 -10.48171,8.652347 -10.4785,8.646362 -10.47921,8.640392 -10.48176,8.637876 -10.4984,8.631278 -10.50212,8.624631 -10.51576,8.618021 -10.52294,8.610238 -10.52617,8.609791 -10.53101,8.613025 -10.544169999999999,8.611694 -10.55157,8.605289 -10.55286,8.604732 -10.55943,8.601872 -10.56638,8.595694999999999 -10.57583,8.597106999999999 -10.57953,8.595742 -10.58231,8.591388 -10.58121,8.575075999999999 -10.583069999999999,8.571637 -10.59023,8.569366 -10.59486,8.564558 -10.6023,8.549655 -10.607849999999999,8.545999 -10.61811,8.543326 -10.622389999999999,8.541684 -10.62404,8.532043 -10.631119999999999,8.512278999999999 -10.632899999999999,8.504282999999999 -10.62947,8.494624999999999 -10.63063,8.490724999999999 -10.63823,8.493734999999999 -10.63962,8.492592 -10.63988,8.487054 -10.639419999999999,8.483174999999999 -10.642429999999999,8.47974 -10.64774,8.478379 -10.64959,8.476317999999999 -10.65033,8.461392 -10.651529999999999,8.45733 -10.65196,8.455887 -10.651759999999999,8.445092 -10.65279,8.441087 -10.6658,8.44196 -10.72328,8.43692 -10.817489999999999,8.39852 -10.866059999999999,8.423959999999999 -10.923489999999999,8.4075 -10.95767,8.41478 -10.98623,8.41113 -11.00916,8.385389999999999 -11.04392,8.36058 -11.082599999999999,8.353719999999999 -11.170199999999999,8.37678 -11.215949999999999,8.3542 -11.22634,8.35441 -11.279629999999999,8.394069999999999 -11.292439999999999,8.425219999999999 -11.29316,8.47084 -11.30597,8.497109999999999 -11.32118,8.51172 -11.3612,8.51759 -11.396699999999999,8.55396 -11.38766,8.6838 -11.3718,8.69896 -11.361409999999999,8.746689999999999 -11.3308,8.836209999999999 -11.28612,8.89967 -11.23096,8.92112 -11.19006,8.92947 -11.16174,8.973269999999999 -11.138669999999999,9.03356 -11.11344,9.04842 -11.04987,9.06218 -11.010289999999999,9.06395 -10.96424,9.04298 -10.93018,9.00144 -10.88081,8.952809999999999 -10.8027,8.92826 -10.74221,8.92685 -10.716989999999999,8.94288 -10.70398,9.00135 -10.680949999999999,9.016 -10.63875,9.024319999999999 + + + + + 6940203 + Eastern + Kono + SL + 137 + 750 + 69402 + SLP003003000000000000 + SLP003003000000000000 + + + + + + + + + -12.10666,9.875978999999999 -12.08248,9.883448 -12.07948,9.885524999999999 -12.0614,9.889249 -12.047499999999999,9.895261 -12.03156,9.898301999999999 -12.02919,9.898754 -11.93787,9.926546 -11.92559,9.92887 -11.91864,9.932563 -11.91807,9.932715999999999 -11.90628,9.86938 -11.90593,9.71207 -12.102119999999999,9.64429 -12.12087,9.62424 -12.13103,9.59933 -12.12323,9.57959 -12.09406,9.576739999999999 -12.07563,9.566 -12.04265,9.51454 -12.02159,9.50065 -11.97987,9.50287 -11.95157,9.52049 -11.92064,9.51213 -11.900869999999999,9.44975 -11.88072,9.433479999999999 -11.881729999999999,9.40947 -11.86478,9.37923 -11.83963,9.24614 -11.79953,9.21378 -11.823309999999999,9.19675 -11.86515,9.12786 -11.85112,9.09038 -11.80001,9.07571 -11.79493,9.05906 -11.85387,9.03536 -11.8892,9.00882 -11.88948,8.96434 -11.90756,8.85181 -11.93558,8.77406 -11.969519999999999,8.75606 -11.99719,8.75474 -12.01426,8.740589999999999 -12.03541,8.70899 -12.057689999999999,8.70119 -12.1171,8.717879999999999 -12.16216,8.6842 -12.22212,8.69801 -12.240069999999999,8.72931 -12.27402,8.74768 -12.322509999999999,8.76115 -12.35403,8.74335 -12.36417,8.786619999999999 -12.34812,8.85513 -12.3603,8.89593 -12.38409,8.91519 -12.49745,8.97912 -12.50433,9.01634 -12.52011,9.02119 -12.574059999999999,9.02051 -12.59261,9.04481 -12.585889999999999,9.0693 -12.56131,9.0989 -12.526389999999999,9.09826 -12.49539,9.16033 -12.462109999999999,9.205679999999999 -12.45926,9.244579999999999 -12.491849999999999,9.26877 -12.53771,9.277839999999999 -12.54232,9.301019999999999 -12.53102,9.31259 -12.516349999999999,9.315469999999999 -12.49924,9.34594 -12.48559,9.35641 -12.471109999999999,9.35129 -12.41869,9.30056 -12.40645,9.30428 -12.40821,9.327959999999999 -12.4342,9.37041 -12.42592,9.3782 -12.40344,9.38312 -12.39498,9.39889 -12.409219999999999,9.43021 -12.429639999999999,9.446 -12.433389999999999,9.467169999999999 -12.44743,9.47804 -12.48778,9.48695 -12.50761,9.50737 -12.48992,9.57367 -12.5001,9.59069 -12.533799999999999,9.60147 -12.58688,9.595846 -12.59256,9.599966 -12.59174,9.599878 -12.59063,9.612526 -12.585369999999999,9.628867 -12.585464999999999,9.631319 -12.58562,9.635303 -12.58797,9.642191 -12.59149,9.654131 -12.58966,9.660575 -12.58712,9.663114 -12.58319,9.663588 -12.57853,9.658087999999999 -12.57553,9.659938 -12.57418,9.670057999999999 -12.56957,9.677431 -12.56797,9.683873999999999 -12.56893,9.692375999999999 -12.56666,9.70273 -12.556699999999999,9.703455999999999 -12.54745,9.709007 -12.53994,9.716665 -12.53614,9.720542 -12.53359,9.720091 -12.528919999999999,9.709073 -12.52566,9.705866 -12.52241,9.705418 -12.51941,9.707267 -12.51929,9.711427 -12.5192,9.714164999999999 -12.52809,9.736433 -12.52556,9.74173 -12.52302,9.743347999999999 -12.50911,9.742937 -12.50727,9.745932 -12.50844,9.749376 -12.51842,9.75394 -12.51866,9.756468 -12.51243,9.763387 -12.51132,9.775115 -12.5014,9.789173 -12.50031,9.808028999999999 -12.49731,9.810339 -12.49128,9.811279 -12.49018,9.825996999999999 -12.492279999999999,9.828979 -12.49668,9.829884 -12.49947,9.832172999999999 -12.50064,9.834697999999999 -12.49887,9.839316999999999 -12.49901,9.843647 -12.48009,9.855468999999999 -12.456899999999999,9.854641 -12.45251,9.857187 -12.4435,9.866187999999999 -12.437519999999999,9.877477 -12.43174,9.881638 -12.39373,9.887758 -12.38804,9.889003 -12.37125,9.892669 -12.36593,9.895676999999999 -12.35318,9.896182 -12.28922,9.908817 -12.287369999999999,9.910892 -12.26455,9.916105 -12.22711,9.92465 -12.2227,9.924435 -12.21526,9.91871 -12.21293,9.914118 -12.205019999999999,9.907014999999999 -12.177379999999999,9.897441 -12.15692,9.882096 -12.15296,9.880053999999999 -12.141819999999999,9.874321999999999 -12.12651,9.871375 -12.12002,9.871853 -12.10666,9.875978999999999 + + + + + 6940301 + Northern + Bombali + SL + 33 + 267 + 69403 + SLP001001000000000000 + SLP001002000000000000 + + + + + + + + + + + -13.22761,8.882942 -13.23086,8.884760999999999 -13.24018,8.8978 -13.24044,8.902393 -13.23654,8.907012999999999 -13.22572,8.912133 -13.217169999999999,8.912874 -13.21324,8.911059 -13.2074,8.901904 -13.20069,8.899187 -13.198589999999999,8.896672 -13.20203,8.892976 -13.22092,8.883903 -13.22761,8.882942 + + + + + + + + + -13.15962,8.869790999999999 -13.16821,8.875944 -13.17123,8.880292 -13.16987,8.883057 -13.16756,8.883759 -13.15966,8.875995 -13.15779,8.872099 -13.15962,8.869790999999999 + + + + + + + + + -12.48992,9.57367 -12.50761,9.50737 -12.48778,9.48695 -12.44743,9.47804 -12.433389999999999,9.467169999999999 -12.429639999999999,9.446 -12.409219999999999,9.43021 -12.39498,9.39889 -12.40344,9.38312 -12.42592,9.3782 -12.4342,9.37041 -12.40821,9.327959999999999 -12.40645,9.30428 -12.41869,9.30056 -12.471109999999999,9.35129 -12.48559,9.35641 -12.49924,9.34594 -12.516349999999999,9.315469999999999 -12.53102,9.31259 -12.54232,9.301019999999999 -12.53771,9.277839999999999 -12.55274,9.24451 -12.562889999999999,9.242369999999999 -12.577489999999999,9.25 -12.60985,9.228579999999999 -12.63166,9.237349999999999 -12.662039999999999,9.231009999999999 -12.687419999999999,9.20926 -12.694599999999999,9.143879999999999 -12.74433,9.09028 -12.76656,8.99385 -12.81126,8.970129999999999 -12.80922,8.93857 -12.8163,8.902329999999999 -12.84104,8.910138999999999 -12.86486,8.897684 -12.89959,8.858252999999999 -12.9598,8.848993999999999 -13.02701,8.842038 -13.08026,8.84669 -13.131779999999999,8.85083 -13.14042,8.865537 -13.1492,8.865945999999999 -13.15877,8.881284 -13.15971,8.884494999999999 -13.15741,8.885657 -13.16595,8.899661999999999 -13.16928,8.903612 -13.17716,8.90507 -13.18131,8.904356999999999 -13.19335,8.907731999999999 -13.20032,8.914813 -13.20104,8.919174 -13.20313,8.921459 -13.224019999999999,8.936038 -13.23001,8.940042999999999 -13.23678,8.943171 -13.24061,8.946624 -13.24393,8.942349999999999 -13.24555,8.942111 -13.24812,8.946691 -13.25564,8.954439 -13.262499999999999,8.955563 -13.268459999999999,8.948632999999999 -13.2726,8.946308999999999 -13.285589999999999,8.948611 -13.293889999999999,8.950082 -13.29715,8.955116 -13.29701,8.968904 -13.29055,8.995108999999999 -13.289809999999999,8.99813 -13.29311,9.008449 -13.30763,9.037539 -13.30071,9.041541 -13.28857,9.052565 -13.28143,9.05652 -13.276389999999999,9.06207 -13.26787,9.067413 -13.247579999999999,9.075135 -13.23625,9.075441 -13.21564,9.071673 -13.20686,9.072651 -13.188359999999999,9.084573 -13.17947,9.090294999999999 -13.17417,9.092397999999999 -13.16306,9.091551 -13.15146,9.085881 -13.12306,9.0578 -13.10751,9.049626 -13.087619999999999,9.048372 -13.07865,9.050236 -13.06938,9.052161 -13.05832,9.058433 -13.05085,9.082604999999999 -13.043699999999999,9.086555 -13.03608,9.088209 -13.018509999999999,9.087626 -13.01182,9.090882 -13.00215,9.097372999999999 -12.99161,9.112831 -12.987769999999999,9.119821999999999 -12.98086,9.132425 -12.97339,9.158894999999999 -12.9732,9.165101 -12.97024,9.171782 -12.956189999999999,9.182202999999999 -12.95415,9.189799 -12.95883,9.235272999999999 -12.952439999999999,9.249328999999999 -12.943809999999999,9.275577 -12.941929999999999,9.277960999999999 -12.935079999999999,9.286657 -12.92652,9.286474999999999 -12.916539999999999,9.282624999999999 -12.90074,9.270992 -12.8931,9.270345 -12.88111,9.277994 -12.87636,9.296635999999999 -12.8729,9.298263 -12.86825,9.295299999999999 -12.85715,9.29582 -12.8446,9.286924 -12.8408,9.285311 -12.83134,9.291100999999999 -12.825089999999999,9.290899 -12.817209999999999,9.286294 -12.816509999999999,9.285883 -12.81212,9.286822 -12.8066,9.293512 -12.794129999999999,9.297476 -12.78951,9.300713999999999 -12.78837,9.303936 -12.789569999999999,9.312665 -12.78796,9.315889 -12.78519,9.316820999999999 -12.78152,9.323962 -12.77856,9.333399 -12.77882,9.340063 -12.77698,9.342599 -12.75685,9.342228 -12.75339,9.345001 -12.75087,9.349608 -12.75159,9.355581 -12.75651,9.366236 -12.75817,9.376927999999999 -12.757759999999999,9.388422 -12.75224,9.39649 -12.724,9.395232 -12.716799999999999,9.390435999999999 -12.71217,9.389536 -12.7113,9.401491999999999 -12.70879,9.410926 -12.70349,9.415545 -12.698399999999999,9.416256 -12.69119,9.408011 -12.68887,9.407330999999999 -12.6868,9.409179 -12.686579999999999,9.412167999999999 -12.68614,9.417686 -12.68338,9.421144 -12.685499999999999,9.430789 -12.67997,9.43518 -12.67998,9.438857 -12.68393,9.442978 -12.68026,9.450578999999999 -12.67938,9.460006 -12.67847,9.463687 -12.672689999999999,9.466927999999999 -12.67132,9.469232999999999 -12.67204,9.475436 -12.65065,9.508851999999999 -12.64929,9.516672 -12.65117,9.524481 -12.658609999999999,9.531806 -12.66047,9.532029 -12.657489999999999,9.539166 -12.64803,9.547939 -12.642939999999999,9.549568 -12.63437,9.548223 -12.63277,9.552597 -12.636509999999999,9.561088 -12.63629,9.565455 -12.63076,9.572144 -12.62377,9.593264 -12.62115,9.601146 -12.61492,9.606227 -12.60008,9.600766 -12.59256,9.599966 -12.58688,9.595846 -12.533799999999999,9.60147 -12.5001,9.59069 -12.48992,9.57367 + + + + + + + 6940302 + Northern + Kambia + SL + 58 + 167 + 69403 + SLP001005000000000000 + SLP001004000000000000 + + + + + + + + + -11.59008,9.999249 -11.58468,9.999511999999999 -11.57588,9.999563 -11.57399,9.999575 -11.56358,9.998569 -11.5014,10.0 -11.49839,10.0 -11.4811,9.999741999999999 -11.44652,9.999224 -11.31897,9.998436 -11.31394,9.998405 -11.25149,9.999586 -11.20675,10.00043 -11.20595,10.0 -11.19469,9.991091 -11.17497,9.975811 -11.17126,9.966151999999999 -11.1671,9.944767 -11.16456,9.912578 -11.160159999999999,9.890504 -11.15437,9.879232999999999 -11.15282,9.877884999999999 -11.14277,9.869109 -11.09734,9.847918 -11.09618,9.845617 -11.06976,9.828118 -11.04876,9.80757 -11.03871,9.797737 -11.012549999999999,9.759313 -11.00398,9.750795999999999 -10.98384,9.725021999999999 -10.977359999999999,9.713979 -10.97415,9.705985999999999 -10.97089,9.697877999999999 -10.96791,9.673736999999999 -10.96282,9.664073999999999 -10.95471,9.657856 -10.94406,9.656231 -10.93293,9.656444 -10.92622,9.654593 -10.92136,9.649988 -10.9209,9.641712 -10.91489,9.632967 -10.91264,9.615035 -10.91099,9.601929 -10.90405,9.594332 -10.895479999999999,9.593858 -10.87813,9.573829999999999 -10.8594,9.558166 -10.85894,9.552649 -10.87007,9.543244 -10.87379,9.537504 -10.86044,9.527165999999999 -10.85713,9.524602 -10.830959999999999,9.520645999999999 -10.827489999999999,9.51788 -10.82634,9.514201 -10.83052,9.507313999999999 -10.844429999999999,9.500904 -10.848369999999999,9.495395 -10.84861,9.491028999999999 -10.84076,9.476533 -10.840769999999999,9.471017 -10.84889,9.461608999999999 -10.8489,9.454713 -10.84384,9.443795 -10.84336,9.442750999999999 -10.8355,9.43814 -10.827159999999999,9.435366 -10.81607,9.425691 -10.80635,9.420154999999999 -10.801959999999999,9.4144 -10.80452,9.40728 -10.8124,9.40132 -10.81659,9.391906 -10.81474,9.386616 -10.809659999999999,9.38086 -10.80457,9.38085 -10.79923,9.390720999999999 -10.78974,9.390013 -10.78331,9.385586 -10.78002,9.383327 -10.77007,9.381697 -10.760109999999999,9.386043 -10.74831,9.384867 -10.740919999999999,9.375427 -10.73837,9.374043 -10.73098,9.380188 -10.72499,9.371672 -10.71111,9.348469 -10.71021,9.337894 -10.7116,9.334681 -10.70745,9.330074 -10.68941,9.324515 -10.668839999999999,9.309297 -10.663309999999999,9.300549999999999 -10.661479999999999,9.289973 -10.66752,9.274717 -10.67102,9.265866 -10.675219999999999,9.250249999999999 -10.67455,9.239447999999999 -10.66347,9.22655 -10.6644,9.226552999999999 -10.66374,9.210006 -10.66792,9.203352 -10.679029999999999,9.198324 -10.682729999999999,9.198563 -10.69523,9.193997 -10.70842,9.191960999999999 -10.71149,9.196249999999999 -10.713039999999999,9.198406 -10.71836,9.197499 -10.72348,9.183494 -10.71427,9.16348 -10.71454,9.143948999999999 -10.726129999999999,9.131107 -10.72616,9.116631 -10.73014,9.091364 -10.732049999999999,9.087187999999999 -10.73339,9.084249 -10.72993,9.079185 -10.7082,9.075459 -10.67512,9.081352 -10.66032,9.081545 -10.63307,9.069526 -10.62266,9.067659 -10.621969999999999,9.069495999999999 -10.61729,9.068054 -10.612959999999999,9.066713999999999 -10.59402,9.054944 -10.589718,9.049464 -10.5848,9.0432 -10.583589999999999,9.036372 -10.58544,9.031568999999999 -10.58619,9.016176 -10.58759,9.012275 -10.59176,9.009302 -10.59432,9.003337 -10.594783,8.999938999999999 -10.63875,9.024319999999999 -10.680949999999999,9.016 -10.70398,9.00135 -10.716989999999999,8.94288 -10.74221,8.92685 -10.8027,8.92826 -10.88081,8.952809999999999 -10.93018,9.00144 -10.96424,9.04298 -11.010289999999999,9.06395 -11.04987,9.06218 -11.11344,9.04842 -11.138669999999999,9.03356 -11.16174,8.973269999999999 -11.19006,8.92947 -11.23096,8.92112 -11.28612,8.89967 -11.3308,8.836209999999999 -11.361409999999999,8.746689999999999 -11.3718,8.69896 -11.38766,8.6838 -11.406,8.70606 -11.434659999999999,8.77528 -11.458209999999999,8.86321 -11.49236,8.90569 -11.50412,8.946 -11.500959999999999,8.98245 -11.4701,9.025729999999999 -11.479749999999999,9.11393 -11.47297,9.139709999999999 -11.43585,9.16716 -11.45224,9.18045 -11.49319,9.18455 -11.526249999999999,9.175789999999999 -11.545959999999999,9.15222 -11.58638,9.13654 -11.629899999999999,9.13251 -11.67618,9.09744 -11.705579999999999,9.1027 -11.72986,9.12669 -11.73783,9.16131 -11.740259999999999,9.21014 -11.72444,9.26077 -11.75591,9.2748 -11.79953,9.21378 -11.83963,9.24614 -11.86478,9.37923 -11.881729999999999,9.40947 -11.88072,9.433479999999999 -11.900869999999999,9.44975 -11.92064,9.51213 -11.95157,9.52049 -11.97987,9.50287 -12.02159,9.50065 -12.04265,9.51454 -12.07563,9.566 -12.09406,9.576739999999999 -12.12323,9.57959 -12.13103,9.59933 -12.12087,9.62424 -12.102119999999999,9.64429 -11.90593,9.71207 -11.90628,9.86938 -11.91807,9.932715999999999 -11.90977,9.934948 -11.90658,9.935805 -11.89825,9.945708 -11.891389999999999,9.986186 -11.88585,9.997462 -11.82868,9.997451999999999 -11.76868,9.997427999999999 -11.73481,10.0 -11.725529999999999,9.997947 -11.70146,9.99836 -11.65337,9.99918 -11.61439,9.998068 -11.59008,9.999249 + + + + + 6940303 + Northern + Koinadugu + SL + 15 + 190 + 69403 + SLP001002000000000000 + SLP001001000000000000 + + + + + + + + + + + -13.12432,8.563323 -13.125489999999999,8.566302 -13.12299,8.572058999999999 -13.11133,8.59027 -13.10528,8.582495 -13.10779,8.576509 -13.11902,8.564042 -13.12432,8.563323 + + + + + + + + + -13.02472,8.576964 -13.021509999999999,8.580655999999999 -13.01553,8.583444 -13.0116,8.581856999999999 -13.00904,8.578885 -13.01018,8.575434 -13.01523,8.571502 -13.02008,8.571247 -13.02285,8.57307 -13.02472,8.576964 + + + + + + + + + -13.13235,8.541186 -13.13005,8.533037 -13.13164,8.529634 -13.13437,8.530533 -13.13575,8.532794 -13.135759999999999,8.538684999999999 -13.13235,8.541186 + + + + + + + + + -13.11734,8.547119 -13.117789999999999,8.544172 -13.12188,8.53895 -13.12506,8.536222 -13.12733,8.536896 -13.12735,8.541653999999999 -13.12508,8.545285 -13.1194,8.548246 -13.11734,8.547119 + + + + + + + + + -13.12101,8.553906 -13.12282,8.551183 -13.12578,8.550720999999999 -13.12874,8.552752 -13.126939999999999,8.559327 -13.12261,8.55934 -13.120559999999999,8.556853 -13.12101,8.553906 + + + + + + + + + -12.96611,8.576351 -12.96193,8.570861 -12.961919999999999,8.568562999999999 -12.97369,8.568963 -12.981059999999999,8.567087 -12.98568,8.567523 -12.98961,8.570258 -12.99677,8.569991 -13.000439999999999,8.567216 -13.00827,8.564878 -13.0122,8.566006 -13.01267,8.567841 -13.00417,8.574087 -12.989879999999999,8.576688 -12.982279999999999,8.580401999999999 -12.97582,8.580436 -12.97142,8.577472999999999 -12.96611,8.576351 + + + + + + + + + -13.11034,8.566397 -13.10851,8.564816 -13.10782,8.560287 -13.109859999999999,8.557335999999999 -13.11373,8.555965 -13.11623,8.556865 -13.11669,8.559583 -13.11239,8.565937999999999 -13.11034,8.566397 + + + + + + + + + -13.06512,8.539766 -13.067679999999999,8.543198 -13.07114,8.54249 -13.08539,8.533454 -13.08724,8.534822 -13.09004,8.539629 -13.0871,8.549981 -13.09015,8.558692 -13.08947,8.561681999999999 -13.07958,8.56633 -13.06456,8.563656999999999 -13.06201,8.561144 -13.06381,8.551947 -13.05709,8.54716 -13.06098,8.542087 -13.06512,8.539766 + + + + + + + + + -12.84104,8.910138999999999 -12.8163,8.902329999999999 -12.80922,8.93857 -12.81126,8.970129999999999 -12.76656,8.99385 -12.74433,9.09028 -12.694599999999999,9.143879999999999 -12.687419999999999,9.20926 -12.662039999999999,9.231009999999999 -12.63166,9.237349999999999 -12.60985,9.228579999999999 -12.577489999999999,9.25 -12.562889999999999,9.242369999999999 -12.55274,9.24451 -12.53771,9.277839999999999 -12.491849999999999,9.26877 -12.45926,9.244579999999999 -12.462109999999999,9.205679999999999 -12.49539,9.16033 -12.526389999999999,9.09826 -12.56131,9.0989 -12.585889999999999,9.0693 -12.59261,9.04481 -12.574059999999999,9.02051 -12.52011,9.02119 -12.50433,9.01634 -12.49745,8.97912 -12.38409,8.91519 -12.3603,8.89593 -12.34812,8.85513 -12.36417,8.786619999999999 -12.35403,8.74335 -12.41812,8.706519999999999 -12.4007,8.68211 -12.33961,8.664479999999999 -12.313409999999999,8.61916 -12.32948,8.59495 -12.35,8.593059999999999 -12.37068,8.58094 -12.39242,8.55798 -12.558149999999999,8.48849 -12.58165,8.49422 -12.612109999999999,8.52422 -12.65018,8.479839999999999 -12.66139,8.45386 -12.69477,8.4451 -12.68734,8.42768 -12.66602,8.42065 -12.67899,8.41261 -12.69725,8.38819 -12.803599999999999,8.38221 -12.82114,8.39748 -12.84798,8.40282 -12.897309999999999,8.3133 -12.92572,8.293543 -12.92962,8.292372 -12.931039999999999,8.300685 -12.92948,8.317974 -12.93263,8.332138 -12.94364,8.346301 -12.97034,8.347865 -12.9845,8.352586 -12.99864,8.357305999999999 -13.01121,8.360464 -13.01121,8.369876 -13.023809999999999,8.376189999999999 -13.036479999999999,8.380129999999999 -13.052479999999999,8.385536 -13.06404,8.394795 -13.077959999999999,8.401751 -13.08848,8.412315 -13.08427,8.418399 -13.09211,8.419733 -13.12678,8.432627999999999 -13.13374,8.439937 -13.1338,8.449581999999999 -13.13014,8.453965999999999 -13.12208,8.456768 -13.11749,8.461387999999999 -13.11473,8.462320999999999 -13.11148,8.458436 -13.10851,8.463964 -13.10924,8.469013 -13.10562,8.482124 -13.10333,8.484434 -13.0984,8.484365 -13.091559999999999,8.48427 -13.08535,8.486831 -13.08078,8.494664999999999 -13.07802,8.496058 -13.06764,8.495886 -13.06351,8.499124 -13.054,8.520963 -13.04715,8.530934999999999 -13.04348,8.533135 -13.04255,8.533692 -13.02825,8.547317 -13.02668,8.555364 -13.023709999999999,8.560661 -13.01282,8.552681 -13.00728,8.552251 -12.99578,8.558743 -12.981249999999999,8.559278 -12.97734,8.562054 -12.97161,8.555645 -12.96706,8.556699999999999 -12.960509999999999,8.554923 -12.94801,8.556691 -12.93624,8.555602 -12.928039999999999,8.56413 -12.934229999999999,8.569393 -12.939539999999999,8.568676999999999 -12.94603,8.574846 -12.95111,8.575509 -12.95528,8.579622 -12.95299,8.58262 -12.94401,8.585191999999999 -12.94841,8.588615 -12.959009999999999,8.587183 -12.96434,8.590818 -12.9695,8.591805 -12.98192,8.59878 -12.99139,8.601027 -12.99901,8.600758 -13.01106,8.593253 -13.011659999999999,8.592881999999999 -13.01997,8.593297 -13.02252,8.59558 -13.02002,8.602255 -13.02279,8.602468999999999 -13.03358,8.592765 -13.04395,8.590182 -13.05633,8.576333999999999 -13.06001,8.573788 -13.064159999999999,8.573076 -13.06788,8.579027 -13.07136,8.581764 -13.08497,8.581 -13.08867,8.582587 -13.096819999999999,8.594715 -13.0973,8.598846999999999 -13.09408,8.601162 -13.100339999999999,8.604801999999999 -13.10657,8.606145 -13.10959,8.608655 -13.12045,8.61112 -13.11349,8.604039 -13.113,8.600595999999999 -13.120279999999999,8.582869 -13.13058,8.567881 -13.13146,8.560525999999999 -13.130409999999999,8.555574999999999 -13.133179999999999,8.548354 -13.136889999999999,8.545199 -13.137079999999999,8.536837 -13.13843,8.530169 -13.14414,8.520719 -13.15011,8.515402 -13.15541,8.515141 -13.15842,8.516961 -13.16294,8.521406 -13.16446,8.522898 -13.16885,8.524709 -13.17512,8.531333 -13.190709999999999,8.553519 -13.199109999999999,8.568629 -13.20332,8.577790999999999 -13.211119999999999,8.608064 -13.21557,8.618143 -13.22371,8.629114 -13.22744,8.634150999999999 -13.23207,8.636879 -13.24207,8.648531999999999 -13.24726,8.666646999999999 -13.247809999999999,8.680197 -13.245839999999999,8.696978 -13.24779,8.713046 -13.24621,8.719028 -13.24341,8.714451 -13.241759999999999,8.704022 -13.239409999999999,8.699754 -13.23825,8.703256 -13.23867,8.706436999999999 -13.24747,8.771625999999999 -13.24685,8.782887 -13.250159999999999,8.796192 -13.24456,8.822646 -13.23789,8.827971 -13.231199999999999,8.836535 -13.228479999999999,8.837446999999999 -13.22019,8.841173 -13.20874,8.855717 -13.20157,8.85507 -13.18698,8.848265 -13.174899999999999,8.836618 -13.17073,8.834576 -13.1689,8.837802999999999 -13.17448,8.843513 -13.1738,8.846045 -13.17033,8.845834999999999 -13.16106,8.840835 -13.14535,8.839316999999999 -13.13946,8.836822 -13.126569999999999,8.839727999999999 -13.1303,8.847839 -13.13132,8.850059 -13.131779999999999,8.85083 -13.08026,8.84669 -13.02701,8.842038 -12.9598,8.848993999999999 -12.89959,8.858252999999999 -12.86486,8.897684 -12.84104,8.910138999999999 + + + + + + + 6940304 + Northern + Port Loko + SL + 61 + 338 + 69403 + SLP001003000000000000 + + + + + + + + + -12.35403,8.74335 -12.322509999999999,8.76115 -12.27402,8.74768 -12.240069999999999,8.72931 -12.22212,8.69801 -12.16216,8.6842 -12.1171,8.717879999999999 -12.057689999999999,8.70119 -12.03541,8.70899 -12.01426,8.740589999999999 -11.99719,8.75474 -11.969519999999999,8.75606 -11.93558,8.77406 -11.90756,8.85181 -11.88948,8.96434 -11.8892,9.00882 -11.85387,9.03536 -11.79493,9.05906 -11.80001,9.07571 -11.85112,9.09038 -11.86515,9.12786 -11.823309999999999,9.19675 -11.79953,9.21378 -11.75591,9.2748 -11.72444,9.26077 -11.740259999999999,9.21014 -11.73783,9.16131 -11.72986,9.12669 -11.705579999999999,9.1027 -11.67618,9.09744 -11.629899999999999,9.13251 -11.58638,9.13654 -11.545959999999999,9.15222 -11.526249999999999,9.175789999999999 -11.49319,9.18455 -11.45224,9.18045 -11.43585,9.16716 -11.47297,9.139709999999999 -11.479749999999999,9.11393 -11.4701,9.025729999999999 -11.500959999999999,8.98245 -11.50412,8.946 -11.49236,8.90569 -11.458209999999999,8.86321 -11.434659999999999,8.77528 -11.406,8.70606 -11.38766,8.6838 -11.396699999999999,8.55396 -11.442629999999999,8.56347 -11.52544,8.55659 -11.56962,8.5606 -11.59993,8.53965 -11.61599,8.51427 -11.63707,8.50554 -11.7082,8.5265 -11.74146,8.524649999999999 -11.7593,8.50596 -11.775969999999999,8.464449999999999 -11.81091,8.431609999999999 -11.83278,8.426909999999999 -11.870609999999999,8.377969999999999 -11.96607,8.37829 -12.03229,8.41112 -12.06953,8.37923 -12.100709999999999,8.33198 -12.12917,8.31683 -12.24615,8.39912 -12.2982,8.39842 -12.3892,8.391 -12.45293,8.35102 -12.44387,8.340529999999999 -12.47297,8.333259999999999 -12.58514,8.343299999999999 -12.60155,8.382569999999999 -12.627689999999999,8.4039 -12.66602,8.42065 -12.68734,8.42768 -12.69477,8.4451 -12.66139,8.45386 -12.65018,8.479839999999999 -12.612109999999999,8.52422 -12.58165,8.49422 -12.558149999999999,8.48849 -12.39242,8.55798 -12.37068,8.58094 -12.35,8.593059999999999 -12.32948,8.59495 -12.313409999999999,8.61916 -12.33961,8.664479999999999 -12.4007,8.68211 -12.41812,8.706519999999999 -12.35403,8.74335 + + + + + 6940305 + Northern + Tonkolili + SL + 36 + 220 + 69403 + SLP001004000000000000 + SLP001005000000000000 + + + + + + + + + + + -13.29669,8.494073999999999 -13.29509,8.497299 -13.28725,8.497349 -13.28308,8.49393 -13.27753,8.492815999999999 -13.274979999999999,8.490536 -13.27774,8.488451 -13.27887,8.485458 -13.27867,8.475051 -13.27042,8.490049 -13.26786,8.494714 -13.26023,8.492694 -13.25625,8.482843 -13.25394,8.482628 -13.25141,8.484481 -13.250529999999999,8.490916 -13.24778,8.492540999999999 -13.24546,8.491637 -13.24174,8.486606999999999 -13.23254,8.491256999999999 -13.22907,8.48944 -13.22493,8.491531999999999 -13.217309999999999,8.49066 -13.21338,8.487926999999999 -13.2104,8.49139 -13.20766,8.490824 -13.20717,8.490721 -13.20254,8.488452 -13.2039,8.484539 -13.1988,8.479977 -13.1868,8.480276999999999 -13.18586,8.477297 -13.179069999999999,8.472286 -13.17103,8.466360999999999 -13.16658,8.455363 -13.16197,8.454472 -13.15733,8.450135 -13.14941,8.436631 -13.14174,8.426800999999999 -13.13573,8.424538999999999 -13.12951,8.425262999999999 -13.121169999999999,8.41957 -13.119999999999999,8.41705 -13.12252,8.413819999999999 -13.11167,8.411125999999999 -13.10749,8.407475 -13.10405,8.410251 -13.09483,8.41168 -13.0922,8.406942 -13.08848,8.412315 -13.077959999999999,8.401751 -13.06404,8.394795 -13.052479999999999,8.385536 -13.036479999999999,8.380129999999999 -13.023809999999999,8.376189999999999 -13.01121,8.369876 -13.01121,8.360464 -12.99864,8.357305999999999 -12.9845,8.352586 -12.97034,8.347865 -12.94364,8.346301 -12.93263,8.332138 -12.92948,8.317974 -12.931039999999999,8.300685 -12.92962,8.292372 -12.97949,8.277365 -13.00901,8.26403 -13.02313,8.251434 -13.04198,8.248308 -13.05328,8.238522 -13.05765,8.238747 -13.06245,8.237041 -13.074669999999999,8.232684 -13.08179,8.227134 -13.08726,8.217231 -13.101279999999999,8.210724 -13.11941,8.198682 -13.1323,8.195853 -13.143509999999999,8.182931999999999 -13.150399999999999,8.179448 -13.16025,8.169976999999999 -13.16458,8.170271 -13.16648,8.170401 -13.16765,8.172919 -13.165839999999999,8.179817 -13.16614,8.190606 -13.1639,8.20118 -13.161379999999999,8.203262 -13.15844,8.213611 -13.16248,8.233104 -13.16644,8.239739 -13.163919999999999,8.243198 -13.16536,8.252143999999999 -13.16676,8.255350999999999 -13.17207,8.256468 -13.17439,8.258979999999999 -13.16801,8.271186999999999 -13.1699,8.278523 -13.16803,8.282299 -13.167619999999999,8.283129 -13.16072,8.285695 -13.1635,8.287974999999999 -13.16834,8.287717 -13.177759999999999,8.28238 -13.18284,8.284647 -13.186109999999999,8.291745 -13.1933,8.29928 -13.18941,8.304126 -13.19289,8.30686 -13.19452,8.310295 -13.199249999999999,8.329326 -13.20205,8.334360999999999 -13.20806,8.33777 -13.21406,8.338652 -13.21939,8.343211999999999 -13.22607,8.342024 -13.231159999999999,8.344059 -13.23136,8.347156999999999 -13.23141,8.347961 -13.23534,8.349316 -13.23859,8.352969999999999 -13.24466,8.364644 -13.26136,8.380616 -13.26233,8.387269 -13.27342,8.407507 -13.27399,8.408554 -13.28398,8.420203 -13.28881,8.418106 -13.2902,8.419015999999999 -13.29261,8.434847 -13.29101,8.437613 -13.28754,8.434879 -13.2842,8.435668 -13.281549999999999,8.436294999999999 -13.27904,8.439984 -13.27682,8.453548 -13.27754,8.458596 -13.29669,8.494073999999999 + + + + + + + + + -13.24182,8.097402 -13.239089999999999,8.103158 -13.234819999999999,8.106854 -13.23428,8.10732 -13.22417,8.111513 -13.22145,8.117958 -13.20677,8.128607 -13.20129,8.136215999999999 -13.19509,8.139237 -13.19618,8.130278 -13.19824,8.127051 -13.201919999999999,8.125881 -13.20419,8.121734999999999 -13.20764,8.121026 -13.209199999999999,8.111374 -13.21195,8.109291 -13.22162,8.109233 -13.22433,8.100721999999999 -13.2402,8.095805 -13.24182,8.097402 + + + + + + + 6940401 + Western Area + Western Area + SL + 10379 + 583 + 69404 + SLP004002000000000000 + + + + + + + -11.870609999999999,8.377969999999999 + + + 6940401 + Oslo + Ole Johan Dahls Hus + + + + + + + -11.870609999999999 8.377969999999999 + + 6940401 + Oslo + Blindern + + + + + + + + 11.870609999999999 8.377969999999999 -11.83278 8.426909999999999 -11.81091 8.431609999999999 -11.775969999999999 8.464449999999999 -11.7593 8.50596 -11.74146 8.524649999999999 -11.7082 8.5265 -11.63707 8.50554 -11.61599 8.51427 -11.5911 8.47231 -11.567209999999999 8.37642 -11.531129999999999 8.33521 -11.46392 8.29433 -11.42815 8.23258 -11.37627 8.17115 -11.36345 8.022069999999999 -11.38152 7.96878 -11.44124 7.95059 -11.488759999999999 7.92937 -11.512829999999999 7.90478 -11.521179999999999 7.88239 -11.49637 7.84925 -11.459289999999999 7.8329 -11.42272 7.78486 -11.42951 7.73304 -11.45659 7.72727 -11.49568 7.7398 -11.529909999999999 7.73467 -11.54969 7.7113 -11.55181 7.69631 -11.56799 7.69718 -11.6103 7.65327 -11.645009999999999 7.59122 -11.67165 7.58101 -11.702959999999999 7.5977 -11.76066 7.61443 -11.76304 7.64152 -11.73705 7.69829 -11.75399 7.70824 -11.77444 7.69286 -11.80033 7.66111 -11.80291 7.63815 -11.87114 7.57895 -11.87956 7.54413 -11.92084 7.52075 -11.93652 7.56823 -11.96874 7.58244 -12.02712 7.59432 -12.055149999999999 7.6384 -12.081289999999999 7.71217 -12.1074 7.7473 -12.14366 7.75388 -12.167579999999999 7.77599 -12.18035 7.80201 -12.18519 7.8459 -12.19636 7.86759 -12.19936 7.88775 -12.1972 7.92656 -12.17428 7.97634 -12.14198 7.99728 -12.03114 8.02645 -11.97279 8.03215 -11.90826 8.005 -11.871689999999999 8.00717 -11.87079 8.032679999999999 -11.89199 8.06563 -11.94816 8.10148 -11.95801 8.12106 -11.95783 8.143829999999999 -11.92554 8.17176 -11.84223 8.18657 -11.86198 8.21624 -11.87466 8.25258 -11.865589999999999 8.28978 -11.88339 8.30747 -11.870609999999999 8.377969999999999 + + Forskningsparken + + + + === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl' --- dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl 2013-05-28 12:06:12 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl 2014-10-10 11:19:52 +0000 @@ -1,8 +1,7 @@ + xmlns:gml="http://www.opengis.net/gml"> 4 === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/dxf2/MetaDataImportAction.java' --- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/dxf2/MetaDataImportAction.java 2014-07-17 13:26:22 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/dxf2/MetaDataImportAction.java 2014-10-10 14:07:30 +0000 @@ -39,10 +39,12 @@ import org.hisp.dhis.dataelement.DataElementCategoryOption; import org.hisp.dhis.dataelement.DataElementGroup; import org.hisp.dhis.dxf2.csv.CsvImportService; +import org.hisp.dhis.dxf2.gml.GmlImportService; import org.hisp.dhis.dxf2.metadata.ImportOptions; import org.hisp.dhis.dxf2.metadata.ImportService; import org.hisp.dhis.importexport.ImportStrategy; import org.hisp.dhis.importexport.action.util.ImportMetaDataCsvTask; +import org.hisp.dhis.importexport.action.util.ImportMetaDataGmlTask; import org.hisp.dhis.importexport.action.util.ImportMetaDataTask; import org.hisp.dhis.option.OptionSet; import org.hisp.dhis.organisationunit.OrganisationUnit; @@ -85,6 +87,9 @@ @Autowired private CsvImportService csvImportService; + + @Autowired + private GmlImportService gmlImportService; @Autowired private CurrentUserService currentUserService; @@ -162,15 +167,22 @@ importOptions.setDryRun( dryRun ); String userId = user != null ? user.getUid() : null; - - if ( "csv".equals( importFormat ) && classKey != null && KEY_CLASS_MAP.get( classKey ) != null ) - { - scheduler.executeTask( new ImportMetaDataCsvTask( userId, importService, csvImportService, - importOptions, in, taskId, KEY_CLASS_MAP.get( classKey ) ) ); - } - else - { - scheduler.executeTask( new ImportMetaDataTask( userId, importService, importOptions, in, taskId ) ); + + switch( importFormat ) + { + case "csv": + if( classKey != null && KEY_CLASS_MAP.get( classKey ) != null ) + { + scheduler.executeTask( new ImportMetaDataCsvTask( userId, importService, csvImportService, + importOptions, in, taskId, KEY_CLASS_MAP.get( classKey ) ) ); + } + break; + case "gml": + scheduler.executeTask( new ImportMetaDataGmlTask( userId, gmlImportService, importOptions, in, taskId ) ); + break; + default: + scheduler.executeTask( new ImportMetaDataTask( userId, importService, importOptions, in, taskId ) ); + break; } return SUCCESS; === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ImportMetaDataCsvTask.java' --- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ImportMetaDataCsvTask.java 2014-07-17 13:01:11 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ImportMetaDataCsvTask.java 2014-09-26 14:04:26 +0000 @@ -75,11 +75,15 @@ this.clazz = clazz; } + // ------------------------------------------------------------------------- + // Runnable implementation + // ------------------------------------------------------------------------- + @Override public void run() { MetaData metaData = null; - + try { metaData = csvImportService.fromCsv( inputStream, clazz ); === added file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ImportMetaDataGmlTask.java' --- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ImportMetaDataGmlTask.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/util/ImportMetaDataGmlTask.java 2014-10-10 14:07:30 +0000 @@ -0,0 +1,96 @@ +package org.hisp.dhis.importexport.action.util; + +/* + * Copyright (c) 2004-2014, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hisp.dhis.dxf2.gml.GmlImportService; +import org.hisp.dhis.dxf2.metadata.ImportOptions; + +import org.hisp.dhis.scheduling.TaskId; + +import javax.xml.transform.TransformerException; +import java.io.IOException; +import java.io.InputStream; + +/** + * @author Halvdan Hoem Grelland + */ +public class ImportMetaDataGmlTask + implements Runnable +{ + private static final Log log = LogFactory.getLog( ImportMetaDataGmlTask.class ); + + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private GmlImportService gmlImportService; + + private ImportOptions importOptions; + + private InputStream inputStream; + + private TaskId taskId; + + private String userUid; + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + public ImportMetaDataGmlTask( String userUid, GmlImportService gmlImportService, + ImportOptions importOptions, InputStream inputStream, TaskId taskId ) + { + this.userUid = userUid; + this.gmlImportService = gmlImportService; + this.importOptions = importOptions; + this.inputStream = inputStream; + this.taskId = taskId; + } + + // ------------------------------------------------------------------------- + // Runnable implementation + // ------------------------------------------------------------------------- + + @Override + public void run() + { + importOptions.setImportStrategy( "update" ); // Force update only for GML import + + try + { + gmlImportService.importGml( inputStream, userUid, importOptions, taskId ); + } + catch ( IOException | TransformerException e) + { + log.error( "Unable to read GML data from input stream", e ); + } + } +} === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties 2014-10-07 21:37:53 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties 2014-10-10 14:07:30 +0000 @@ -282,6 +282,8 @@ intro_event_data_export=Export event data for programs, stages and persons on the DXF 2 format. intro_xml_metadata_import=Import meta-data like data elements and organisation units using the standard DHIS 2 exchange format called DXF 2. intro_csv_metadata_import=Import meta-data using CSV format. Currently only import of data elements is supported. +intro_gml_import=Import geographic data for organisation units using GML format. +gml_import_info_text=Note: Only import of GML data for existing organisation units is supported. no_item_to_match=There is no selected item to match dry_run=Dry run strategy=Strategy === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-importexport/src/main/resources/struts.xml 2014-02-15 18:09:14 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/resources/struts.xml 2014-10-10 14:24:37 +0000 @@ -328,6 +328,23 @@ plainTextError + + + + gml + update + gmlImport.action + + + + + /main.vm + /dhis-web-importexport/mainMenu.vm + /dhis-web-importexport/gmlImport.vm + javascript/importMetaData.js + F_METADATA_IMPORT + + === added file 'dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/gmlImport.vm' --- dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/gmlImport.vm 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/gmlImport.vm 2014-10-10 14:07:30 +0000 @@ -0,0 +1,35 @@ +

$i18n.getString( "gml_import" )

+

$i18n.getString( "gml_import_info_text" )

+
+
+ + + + + + + + + + + + + + + +
$i18n.getString( "file" )
$i18n.getString( "dry_run" ) + +
+
+
+
+ + + + +
+ + \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/index.vm' --- dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/index.vm 2014-02-16 11:29:07 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/index.vm 2014-10-09 23:57:47 +0000 @@ -7,6 +7,7 @@ #introListImgItem( "displayImportDataValueForm.action?importFormat=csv" "csv_data_import" "import" ) #introListImgItem( "displayImportDataValueForm.action?importFormat=pdf" "pdf_data_import" "import" ) #introListImgItem( "displayEventImportForm.action" "event_data_import" "import" ) + #introListImgItem( "gmlImport.action" "gml_import" "import" ) #introListImgItem( "displayExternalImportMenu.action" "dhis14_import" "import" ) #introListImgItem( "dxf2MetaDataExport.action" "metadata_export" "export" ) === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/javascript/importMetaData.js' --- dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/javascript/importMetaData.js 2013-03-15 15:34:40 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/javascript/importMetaData.js 2014-10-10 14:07:30 +0000 @@ -33,4 +33,4 @@ { $( '#notificationDiv' ).hide(); $( '#importSummaryDiv' ).show( 'fast' ).load( 'getMetaDataImportSummary.action' ); -} +} \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/mainMenu.vm' --- dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/mainMenu.vm 2014-02-15 18:09:14 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/mainMenu.vm 2014-10-10 11:19:52 +0000 @@ -7,9 +7,9 @@
  • $i18n.getString( "xml_data_import" ) 
  • $i18n.getString( "csv_data_import" ) 
  • $i18n.getString( "pdf_data_import" ) 
  • +
  • $i18n.getString( "gml_import" ) 
  • $i18n.getString( "event_data_import" ) 
  • $i18n.getString( "dhis14_import" ) 
  • -
  • $i18n.getString( "gml_import" ) 
  • $i18n.getString( "export" ) 

    === modified file 'dhis-2/pom.xml' --- dhis-2/pom.xml 2014-10-07 06:35:04 +0000 +++ dhis-2/pom.xml 2014-10-10 14:24:37 +0000 @@ -958,11 +958,11 @@ gt-referencing ${geotools.version} - - org.geotools - gt-geojson - ${geotools.version} - + + org.geotools + gt-geojson + ${geotools.version} +