com.gisgraphy.domain.geoloc.entity

## Class GisFeature

- java.lang.Object
- - com.gisgraphy.domain.geoloc.entity.GisFeature

- Direct Known Subclasses:
    Adm, AdmBuilding, Airport, Ambulance, AmusePark, Aqueduc, ATM, Bank, Bar, Bay, Beach, Bench, Bridge, Building, BusStation, Camp, Camping, Canyon, Casino, Castle, Cave, Cemetery, Cinema, Cirque, City, CityHall, CitySubdivision, Cliff, Coast, Continent, Country, CourtHouse, Craft, CustomsPost, Dam, Dentist, Desert, Doctor, EmergencyPhone, Factory, Falls, Farm, FerryTerminal, Field, FireStation, FishingArea, Fjord, Forest, Fountain, Fuel, Garden, Golf, Gorge, GrassLand, Gulf, Hill, Hospital, Hotel, House, Ice, Island, Lake, Library, LightHouse, Mall, Marsh, MetroStation, Military, Mill, Mine, Mole, Monument, Mound, Mountain, Museum, NightClub, Oasis, ObservatoryPoint, Ocean, OperaHouse, Park, Parking, Pharmacy, Picnic, Plantation, PolicePost, PoliticalEntity, Pond, Port, PostOffice, Prison, Pyramid, Quay, Rail, RailRoadStation, Ranch, Ravin, Reef, Religious, Rental, Reserve, RestArea, Restaurant, Road, School, Sea, Shop, Sport, Spring, Stadium, Strait, Stream, Street, SwimmingPool, Taxi, Telephone, Theater, Toilet, Tourism, TourismInfo, Tower, Tree, Tunnel, UnderSea, VendingMachine, Veterinary, Vineyard, Volcano, WaterBody, Zoo

      public class GisFeature
      extends Object

  GisFeature is the 'MotherClass of all Features. IMPORTANT Note about admXCodes :
  The AdmCode can have the value from the Geonames CSV file or the value from the `getAdm()`.getAdm1Code It depends on the option `ImporterConfig.isSyncAdmCodesWithLinkedAdmOnes()` in the env.properties file : Gisgraphy try to detect and correct errors in the CSV files. If an error is detected or wrong Adm code are set, the Adm for this GisFeature may not be the one that will be found from the Code in the CSV file. If syncAdmCodesWithLinkedAdmOnes is set to false, the Adm1Code will be set with the value of the CSV file (even if the no Adm are found).
  If syncAdmCodesWithLinkedAdmOnes is set to true then the Adm1Code will always be the same as the `getAdm()`.getAdm1Code
  It depends on what you expect for Adm1Code : ADM values (syncAdmCodesWithLinkedAdmOnes=true) or the CSV one (syncAdmCodesWithLinkedAdmOnes=false)
  Author:
    David Masclet
  See Also:
    `ImporterConfig`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `LOCATION_COLUMN_NAME`
    `protected static org.slf4j.Logger` | `logger`
    `static int` | `MAX_ALTERNATENAME_SIZE`
    `static int` | `NAME_MAX_LENGTH`
    `static String` | `SHAPE_COLUMN_NAME`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GisFeature()` Default Constructor, needed by cgLib
    `GisFeature(GisFeature gisFeature)` Copy Constructor that populate the current `GisFeature` with the specified gisFeature fields

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAlternateName(AlternateName alternateName)` Do a double set : add the alternate name to the current GisFeature and set this GisFeature as the GisFeature of the specified AlternateName
    `void` | `addAlternateNames(List<AlternateName> alternateNames)` Do a double set : add (not replace !)
    `void` | `addIsInCitiesAlternateName(String isInCityAlternateName)`
    `void` | `addIsInCitiesAlternateNames(Collection<String> isInCityAlternateNames)`
    `void` | `addZip(String zip)` add a zip
    `void` | `addZipCode(ZipCode zipCode)` Do a double set : add the zip code to the current GisFeature and set this GisFeature as the GisFeature of the zipcode
    `void` | `addZipCodes(Collection<ZipCode> zipCodes)` Do a double set : add the zip codes to the current GisFeature and set this GisFeature as the GisFeature of the zipcodes * @param zipCodes the zip codes to add
    `void` | `addZips(Collection<String> zips)` add zips
    `double` | `distanceTo(com.vividsolutions.jts.geom.Point point)` Calculate the distance from the current GisFeature to the specified point.
    `boolean` | `equals(Object obj)`
    `Adm` | `getAdm()`
    `String` | `getAdm1Code()` Returns the Adm1Code for this feature.
    `String` | `getAdm1Name()` Returns the name of the Adm of level 1 that this GisFeature is linked to.
    `String` | `getAdm2Code()` Returns the Adm2Code for this feature.
    `String` | `getAdm2Name()` Returns the name of the Adm of level 2 that this GisFeature is linked to.
    `String` | `getAdm3Code()` Returns the Adm3Code for this feature.
    `String` | `getAdm3Name()` Returns the name of the Adm of level 3 that this GisFeature is linked to.
    `String` | `getAdm4Code()` Returns the Adm4Code for this feature.
    `String` | `getAdm4Name()` Returns the name of the Adm of level 4 that this GisFeature is linked to.
    `String` | `getAdm5Code()` Returns the Adm4Code for this feature.
    `String` | `getAdm5Name()` Returns the name of the Adm of level 5 that this GisFeature is linked to.
    `Set<AlternateName>` | `getAlternateNames()`
    `String` | `getAmenity()`
    `String` | `getAsciiName()`
    `Country` | `getCountry()`
    `String` | `getCountryCode()` The country code is not mandatory because gisfeature like undersea does not belongs to a country
    `Integer` | `getElevation()`
    `String` | `getFeatureClass()`
    `String` | `getFeatureCode()`
    `Long` | `getFeatureId()`
    `String` | `getFullyQualifiedName()`
    `String` | `getFullyQualifiedName(boolean withCountry)` Returns a name of the form : (adm1Name et adm2Name are printed) Paris, Département de Ville-De-Paris, Ile-De-France, (FR)
    `Integer` | `getGtopo30()`
    `Long` | `getId()` The datastore id
    `String` | `getIsIn()`
    `String` | `getIsInAdm()`
    `Set<String>` | `getIsInCityAlternateNames()` This field is only for relevance and allow to search for street<->cities in many alternateNames.
    `String` | `getIsInPlace()`
    `Set<String>` | `getIsInZip()`
    `Double` | `getLatitude()`
    `com.vividsolutions.jts.geom.Point` | `getLocation()` Returns The JTS location point of the current GisFeature : The Geometry representation of the latitude, longitude.
    `Double` | `getLongitude()`
    `Date` | `getModificationDate()` The modification date of the feature.
    `String` | `getName()`
    `Long` | `getOpenstreetmapId()`
    `Integer` | `getPopulation()`
    `com.vividsolutions.jts.geom.Geometry` | `getShape()` Returns The JTS shape of the feature : The Return type is a JTS geometry.
    `com.gisgraphy.domain.valueobject.GISSource` | `getSource()`
    `String` | `getTimezone()`
    `Set<ZipCode>` | `getZipCodes()`
    `int` | `hashCode()`
    `boolean` | `isAdm()` Whether the feature is an Adm, in the sense we define it in the `FeatureClassCodeHelper` class.
    `boolean` | `isCity()` Whether the feature is a city, in the sense we define it in the `FeatureClassCodeHelper` class.
    `boolean` | `isCountry()` Whether the feature is a coutry, in the sense we define it in the `FeatureClassCodeHelper` class.
    `boolean` | `isFullTextSearchable()`
    `void` | `populate(GisFeature gisFeature)` Populate all the field / association of the current gisFeature with The Value of The specified One.
    `void` | `setAdm(Adm adm)`
    `void` | `setAdm1Code(String adm1Code)`
    `void` | `setAdm1Name(String adm1Name)` Set the name of the Adm of level 1 that this GisFeature is linked to
    `void` | `setAdm2Code(String adm2Code)`
    `void` | `setAdm2Name(String adm2Name)` Set the name of the Adm of level 2 that this GisFeature is linked to
    `void` | `setAdm3Code(String adm3Code)`
    `void` | `setAdm3Name(String adm3Name)` Set the name of the Adm of level 3 that this GisFeature is linked to
    `void` | `setAdm4Code(String adm4Code)`
    `void` | `setAdm4Name(String adm4Name)` Set The name of the adm of level 4 that the GisFeature is linked to
    `void` | `setAdm5Code(String adm5Code)`
    `void` | `setAdm5Name(String adm5Name)` Set The name of the adm of level 5 that the GisFeature is linked to
    `void` | `setAlternateNames(Set<AlternateName> alternateNames)`
    `void` | `setAmenity(String amenity)`
    `void` | `setAsciiName(String asciiname)`
    `void` | `setCountryCode(String countryCode)`
    `void` | `setElevation(Integer elevation)`
    `void` | `setFeatureClass(String featureClass)`
    `void` | `setFeatureCode(String featureCode)`
    `void` | `setFeatureId(Long featureId)` A featureId is unique and mandatory
    `void` | `setGtopo30(Integer gtopo30)`
    `void` | `setId(Long id)`
    `void` | `setIsIn(String isIn)`
    `void` | `setIsInAdm(String isInAdm)`
    `void` | `setIsInCityAlternateNames(Set<String> isInCityAlternateNames)`
    `void` | `setIsInPlace(String isInPlace)`
    `void` | `setIsInZip(Set<String> isInZip)`
    `void` | `setLocation(com.vividsolutions.jts.geom.Point location)`
    `void` | `setModificationDate(Date modificationDate)`
    `void` | `setName(String name)`
    `void` | `setOpenstreetmapId(Long openstreetmapId)`
    `void` | `setPopulation(Integer population)`
    `void` | `setShape(com.vividsolutions.jts.geom.Geometry shape)`
    `void` | `setSource(com.gisgraphy.domain.valueobject.GISSource source)`
    `void` | `setTimezone(String timezone)`
    `void` | `setZipCodes(Set<ZipCode> zipCodes)` Set The zipCodes for the city.
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### NAME_MAX_LENGTH

          public static final int NAME_MAX_LENGTH

      See Also:
        Constant Field Values

    - #### SHAPE_COLUMN_NAME

          public static final String SHAPE_COLUMN_NAME

      See Also:
        Constant Field Values

    - #### LOCATION_COLUMN_NAME

          public static final String LOCATION_COLUMN_NAME

      See Also:
        Constant Field Values

    - #### logger

          protected static final org.slf4j.Logger logger

    - #### MAX_ALTERNATENAME_SIZE

          public static final int MAX_ALTERNATENAME_SIZE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### GisFeature

          public GisFeature()

      Default Constructor, needed by cgLib

    - #### GisFeature

          public GisFeature(GisFeature gisFeature)

      Copy Constructor that populate the current `GisFeature` with the specified gisFeature fields
      Parameters:
        `gisFeature` - The gisFeature from which we want to populate the GisFeature

  - ### Method Detail

    - #### getId

          public Long getId()

      The datastore id
      Returns:
        The datastoreId, it is not a domain value, just a technical One

    - #### getCountry

          public Country getCountry()

      Returns:
        the country from the country code. Return null if the country Code is null or if no country is found
      See Also:
        `getCountryCode()`

    - #### getLatitude

          public Double getLatitude()

      Returns:
        Returns the latitude (north-south) from the Location `getLocation()`.
      See Also:
        `getLongitude()`, `getLocation()`

    - #### distanceTo

          public double distanceTo(com.vividsolutions.jts.geom.Point point)

      Calculate the distance from the current GisFeature to the specified point.
      Parameters:
        `point` - the JTS point we want to calculate the distance from
      Returns:
        the calculated distance
      See Also:
        `GeolocHelper.distance(Point, Point)`

    - #### getLocation

          public com.vividsolutions.jts.geom.Point getLocation()

      Returns The JTS location point of the current GisFeature : The Geometry representation of the latitude, longitude. The Return type is a JTS point. The Location is calculate from the 4326 `SRID`
      Returns:
        The JTS Point
      See Also:
        `SRID`, `getLongitude()`, `getLocation()`

    - #### getShape

          public com.vividsolutions.jts.geom.Geometry getShape()

      Returns The JTS shape of the feature : The Return type is a JTS geometry.
      Returns:
        The JTS Point
      See Also:
        `SRID`, `getLongitude()`, `getLocation()`

    - #### getLongitude

          public Double getLongitude()

      Returns:
        Returns the longitude (east-west) from the Location `getLocation()`.
      See Also:
        `getLongitude()`, `getLocation()`

    - #### getModificationDate

          public Date getModificationDate()

      The modification date of the feature. The date must match the `Constants.GIS_DATE_PATTERN` This fields is not updated when saving or updating a GisFeature. This fields is to track changes in the gazetteers, not in the Datastore.
      Returns:
        The modification date of the feature

    - #### getAdm1Code

          public String getAdm1Code()

      Returns the Adm1Code for this feature. The only goal to have the Adm1Code directly in the GisFeature is for performance reasons :
      It allows to have the adm1Code without loading all the Adm tree. See Important Notes for admXcode for `GisFeature`
      Returns:
        The Adm1Code for this Feature

    - #### setAdm1Code

          public void setAdm1Code(String adm1Code)

      Parameters:
        `adm1Code` - The adm1code to set
      See Also:
        `getAdm1Code()`

    - #### getAdm2Code

          public String getAdm2Code()

      Returns the Adm2Code for this feature. The only goal to have the Adm2Code directly in the GisFeature is for performance reasons :
      It allows to have the adm2Code without loading all the Adm tree. See Important Notes for admXcode for `GisFeature`
      Returns:
        The Adm2Code for this Feature

    - #### setAdm2Code

          public void setAdm2Code(String adm2Code)

      Parameters:
        `adm2Code` - the adm2code to set
      See Also:
        `getAdm2Code()`

    - #### getAdm3Code

          public String getAdm3Code()

      Returns the Adm3Code for this feature. The only goal to have the Adm3Code directly in the GisFeature is for performance reasons :
      It allows to have the adm3Code without loading all the Adm tree. See Important Notes for admXcode for `GisFeature`
      Returns:
        The Adm3Code for this Feature

    - #### setAdm3Code

          public void setAdm3Code(String adm3Code)

      Parameters:
        `adm3Code` - the adm3code to set
      See Also:
        `getAdm3Code()`

    - #### getAdm4Code

          public String getAdm4Code()

      Returns the Adm4Code for this feature. The only goal to have the Adm4Code directly in the GisFeature is for performance reasons :
      It allows to have the adm4Code without loading the all Adm tree. See Important Notes for admXcode for `GisFeature`
      Returns:
        The Adm4Code for this Feature

    - #### setAdm4Code

          public void setAdm4Code(String adm4Code)

      Parameters:
        `adm4Code` - the adm4code to set
      See Also:
        `getAdm4Code()`

    - #### getAdm5Code

          public String getAdm5Code()

      Returns the Adm4Code for this feature. The only goal to have the Adm4Code directly in the GisFeature is for performance reasons :
      It allows to have the adm4Code without loading the all Adm tree. See Important Notes for admXcode for `GisFeature`
      Returns:
        The Adm4Code for this Feature

    - #### setAdm5Code

          public void setAdm5Code(String adm5Code)

      Parameters:
        `adm5Code` - the adm5Code to set
      See Also:
        `getAdm4Code()`

    - #### getAdm1Name

          public String getAdm1Name()

      Returns the name of the Adm of level 1 that this GisFeature is linked to. The only goal to have it directly in the gisFeature is for performance reasons :
      It allows to have it without loading all the Adm tree
      Returns:
        The name of the Adm of level 1 that this GisFeature is linked to

    - #### setAdm1Name

          public void setAdm1Name(String adm1Name)

      Set the name of the Adm of level 1 that this GisFeature is linked to
      Parameters:
        `adm1Name` - The name of the Adm of level 1 that this GisFeature is linked to
      See Also:
        `getAdm1Name()`

    - #### getAdm2Name

          public String getAdm2Name()

      Returns the name of the Adm of level 2 that this GisFeature is linked to. The only goal to have it directly in the gisFeature is for performance reasons :
      it allow to retrieve it without loading all the Adm tree
      Returns:
        The name of the Adm of level 2 that this GisFeature is linked to

    - #### setAdm2Name

          public void setAdm2Name(String adm2Name)

      Set the name of the Adm of level 2 that this GisFeature is linked to
      Parameters:
        `adm2Name` - The name of the Adm of level 2 that this GisFeature is linked to
      See Also:
        `getAdm2Name()`

    - #### getAdm3Name

          public String getAdm3Name()

      Returns the name of the Adm of level 3 that this GisFeature is linked to. The only goal to have it directly in the gisFeature is for performance reasons :
      It allows to have it without loading all the Adm tree
      Returns:
        The name of the Adm of level 3 that this GisFeature is linked to

    - #### setAdm3Name

          public void setAdm3Name(String adm3Name)

      Set the name of the Adm of level 3 that this GisFeature is linked to
      Parameters:
        `adm3Name` - The name of the Adm of level 3 that this GisFeature is linked to
      See Also:
        `getAdm3Name()`

    - #### getAdm4Name

          public String getAdm4Name()

      Returns the name of the Adm of level 4 that this GisFeature is linked to. The only goal to have it directly in the gisFeature is for performance reasons :
      It allows to have it without loading all the Adm tree
      Returns:
        The name of the Adm of level 4 that this GisFeature is linked to

    - #### setAdm4Name

          public void setAdm4Name(String adm4Name)

      Set The name of the adm of level 4 that the GisFeature is linked to
      Parameters:
        `adm4Name` - The name of the adm of level 4 that the GisFeature is linked to
      See Also:
        `getAdm4Name()`

    - #### getAdm5Name

          public String getAdm5Name()

      Returns the name of the Adm of level 5 that this GisFeature is linked to. The only goal to have it directly in the gisFeature is for performance reasons :
      It allows to have it without loading all the Adm tree
      Returns:
        The name of the Adm of level 5 that this GisFeature is linked to

    - #### setAdm5Name

          public void setAdm5Name(String adm5Name)

      Set The name of the adm of level 5 that the GisFeature is linked to
      Parameters:
        `adm5Name` - The name of the adm of level 5 that the GisFeature is linked to
      See Also:
        `getAdm5Name()`

    - #### getAdm

          public Adm getAdm()

      Returns:
        The Adm with the higher Level that this GisFeature is linked to (the deeper in the Adm tree). See Important Notes for admXcode for `GisFeature`

    - #### setAdm

          public void setAdm(Adm adm)

      Parameters:
        `adm` - The Adm with the higher Level that this GisFeature is linked to (the deeper in the Adm tree).
      See Also:
        `getAdm()`

    - #### getAlternateNames

          public Set<AlternateName> getAlternateNames()

      Returns:
        A list of the `AlternateName`s for this GisFeature

    - #### setAlternateNames

          public void setAlternateNames(Set<AlternateName> alternateNames)

      Parameters:
        `alternateNames` - The `AlternateName`s for this GisFeature

    - #### addAlternateName

          public void addAlternateName(AlternateName alternateName)

      Do a double set : add the alternate name to the current GisFeature and set this GisFeature as the GisFeature of the specified AlternateName
      Parameters:
        `alternateName` - the alternateName to add

    - #### addAlternateNames

          public void addAlternateNames(List<AlternateName> alternateNames)

      Do a double set : add (not replace !) the AlternateNames to the current GisFeature and for each alternatenames : set the current GisFeature as the GisFeature of the Alternate Names
      Parameters:
        `alternateNames` - The alternateNames list to add

    - #### getAsciiName

          public String getAsciiName()

      Returns:
        The ASCII name of the current GisFeature

    - #### setAsciiName

          public void setAsciiName(String asciiname)

      Parameters:
        `asciiname` - The ASCII name of the current GisFeature
      See Also:
        `getAsciiName()`

    - #### getCountryCode

          public String getCountryCode()

      The country code is not mandatory because gisfeature like undersea does not belongs to a country
      Returns:
        The ISO 3166 alpha-2 letter code.

    - #### setCountryCode

          public void setCountryCode(String countryCode)

      Parameters:
        `countryCode` - The ISO 3166 alpha-2 letter code in upper Case (it will be automatically uppercased)
      See Also:
        `getCountryCode()`

    - #### getElevation

          public Integer getElevation()

      Returns:
        The elevation of this gisFeature (in meters)

    - #### setElevation

          public void setElevation(Integer elevation)

      Parameters:
        `elevation` - The elevation of this gisFeature (in meters)
      See Also:
        `getElevation()`

    - #### getGtopo30

          public Integer getGtopo30()

      Returns:
        The average elevation of 30'x30' (900mx900m) area in meters

    - #### setGtopo30

          public void setGtopo30(Integer gtopo30)

      Parameters:
        `gtopo30` - The average elevation of 30'x30' (900mx900m) area to set in meters

    - #### getName

          public String getName()

      Returns:
        The UTF-8 name for the current GisFeature

    - #### setName

          public void setName(String name)

      Parameters:
        `name` - The UTF-8 name for the current GisFeature

    - #### getPopulation

          public Integer getPopulation()

      Returns:
        The population (how many people are in) for this GisFeature

    - #### setPopulation

          public void setPopulation(Integer population)

      Parameters:
        `population` - The population (how many people are in) of this GisFeature

    - #### getSource

          public com.gisgraphy.domain.valueobject.GISSource getSource()

      Returns:
        The source for the gisFeature. it tells from which files / gazetteers it has been imported

    - #### setSource

          public void setSource(com.gisgraphy.domain.valueobject.GISSource source)

      Parameters:
        `source` - The source for the gisFeature to be set

    - #### getTimezone

          public String getTimezone()

      Returns:
        The timeZone for This GisFeature
      See Also:
        Time zone

    - #### setTimezone

          public void setTimezone(String timezone)

      Parameters:
        `timezone` - The timeZone for This GisFeature
      See Also:
        `getTimezone()`

    - #### setLocation

          public void setLocation(com.vividsolutions.jts.geom.Point location)

      Parameters:
        `location` - The location of the GisFeature (JTS point)
      See Also:
        `getLocation()`, `getLatitude()`, `getLongitude()`

    - #### setShape

          public void setShape(com.vividsolutions.jts.geom.Geometry shape)

      Parameters:
        `shape` - The shape of the GisFeature (JTS)
      See Also:
        `getShape()`

    - #### setModificationDate

          public void setModificationDate(Date modificationDate)

      Parameters:
        `modificationDate` - The Date of the Last Modification. This fields is not updated when saving or updating a GisFeature : This fields is to track changes in the gazetteers, not in the datastore. The date should match the `Constants.GIS_DATE_PATTERN`
      See Also:
        `getModificationDate()`

    - #### setId

          public void setId(Long id)

      Parameters:
        `id` - The Id in the datastore. You should never call this method. It is the responsability of the dataStore
      See Also:
        `getId()`

    - #### getFeatureId

          public Long getFeatureId()

      Returns:
        The featureId for this GisFeature. it is a 'Domain value' not a datastore one. A featureId is unique and mandatory

    - #### setFeatureId

          public void setFeatureId(Long featureId)

      A featureId is unique and mandatory
      Parameters:
        `featureId` - The featureId for this GisFeature

    - #### isCity

          public boolean isCity()

      Whether the feature is a city, in the sense we define it in the `FeatureClassCodeHelper` class. It does not check the Class but the feature class and the feature code
      Returns:
        true if it is a city

    - #### isCountry

          public boolean isCountry()

      Whether the feature is a coutry, in the sense we define it in the `FeatureClassCodeHelper` class. It does not check the Class but the feature class and the feature code
      Returns:
        true if it is a country

    - #### isAdm

          public boolean isAdm()

      Whether the feature is an Adm, in the sense we define it in the `FeatureClassCodeHelper` class. It does not check the Class but the feature class and the feature code
      Returns:
        true if it is an ADM

    - #### getFeatureClass

          public String getFeatureClass()

      Returns:
        The feature class for this gisFeature (should always be in uppercase because setter automatically convert the feature class in upperCase). A feature class regroup some feature code
      See Also:
        codes

    - #### setFeatureClass

          public void setFeatureClass(String featureClass)

      Parameters:
        `featureClass` - The feature class to set. Note The featureClass will automaticaly be uppercased.
      See Also:
        `getFeatureClass()`

    - #### getFeatureCode

          public String getFeatureCode()

      Returns:
        The featureCode for the current GisFeature. A feature code represents a specific feature type. GisGraphy regroup some feature codes in an abstract Level called 'place type'. A place type regroup several featurecode.
      See Also:
        `FeatureCode`

    - #### populate

          public void populate(GisFeature gisFeature)

      Populate all the field / association of the current gisFeature with The Value of The specified One.
      Parameters:
        `gisFeature` - the gisFeature to populate with

    - #### setFeatureCode

          public void setFeatureCode(String featureCode)

      Parameters:
        `featureCode` - The feature Code for this GisFeature Note The featureCode will automaticaly be uppercased
      See Also:
        `getFeatureCode()`

    - #### isFullTextSearchable

          public boolean isFullTextSearchable()

      Returns:
        true If the gisFeature must be sync with the fullText search engine

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `Object`

    - #### getFullyQualifiedName

          public String getFullyQualifiedName(boolean withCountry)

      Returns a name of the form : (adm1Name et adm2Name are printed) Paris, Département de Ville-De-Paris, Ile-De-France, (FR)
      Parameters:
        `withCountry` - Whether the country information should be added
      Returns:
        a name with the Administrative division and Country

    - #### getFullyQualifiedName

          public String getFullyQualifiedName()

      Returns:
        a name with the Administrative division (but without Country) wrap `getFullyQualifiedName(boolean)`
      See Also:
        `getFullyQualifiedName(boolean)`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### addZipCode

          public void addZipCode(ZipCode zipCode)

      Do a double set : add the zip code to the current GisFeature and set this GisFeature as the GisFeature of the zipcode
      Parameters:
        `zipCode` - the zip code to add

    - #### addZipCodes

          public void addZipCodes(Collection<ZipCode> zipCodes)

      Do a double set : add the zip codes to the current GisFeature and set this GisFeature as the GisFeature of the zipcodes * @param zipCodes the zip codes to add

    - #### getZipCodes

          public Set<ZipCode> getZipCodes()

      Returns:
        the zip codes for the city

    - #### setZipCodes

          public void setZipCodes(Set<ZipCode> zipCodes)

      Set The zipCodes for the city. IMPORTANT : if you set the zipCodes, you should do a double set : that means that you should set the gisfeature property for all the zip codes, if you don't you will get problems when saving entity in the datastore. Please use this method you should prefer the methods `addZipCode(ZipCode)` and `addZipCodes(Collection)` that do it automatically.
      Parameters:
        `zipCodes` - The zip codes for the City

    - #### getAmenity

          public String getAmenity()

      Returns:
        the amenity (typically the osm tag)

    - #### setAmenity

          public void setAmenity(String amenity)

      Parameters:
        `amenity` - the amenity tag (typically the osm tag)

    - #### getOpenstreetmapId

          public Long getOpenstreetmapId()

      Returns:
        the openstreetmap id. GisFeature has the openstreetmap field when it is a OSM POI

    - #### setOpenstreetmapId

          public void setOpenstreetmapId(Long openstreetmapId)

      Parameters:
        `openstreetmapId` - The openstreetmap id of the POI

    - #### getIsIn

          public String getIsIn()

      Returns:
        The city or state or any information where the street is located

    - #### setIsIn

          public void setIsIn(String isIn)

      Parameters:
        `isIn` - The city or state or any information where the street is located

    - #### getIsInPlace

          public String getIsInPlace()

      Returns:
        the place where the street is located, this field is filled when `OpenStreetMap.isIn` is filled and we got more specific details (generally quarter, neighborhood)

    - #### setIsInPlace

          public void setIsInPlace(String isInPlace)

      Parameters:
        `isInPlace` - the most precise information on where the street is located, generally quarter neighborhood

    - #### getIsInAdm

          public String getIsInAdm()

      Returns:
        the adm (aka administrative division) where the street is located.

    - #### setIsInAdm

          public void setIsInAdm(String isInAdm)

      Parameters:
        `isInAdm` - the adm (aka administrative division) where the street is located

    - #### getIsInZip

          public Set<String> getIsInZip()

    - #### setIsInZip

          public void setIsInZip(Set<String> isInZip)

      Parameters:
        `isInZip` - the zipcode where the street is located.

    - #### addZip

          public void addZip(String zip)

      add a zip

    - #### addZips

          public void addZips(Collection<String> zips)

      add zips

    - #### getIsInCityAlternateNames

          public Set<String> getIsInCityAlternateNames()

      This field is only for relevance and allow to search for street<->cities in many alternateNames. It is not in stored

    - #### setIsInCityAlternateNames

          public void setIsInCityAlternateNames(Set<String> isInCityAlternateNames)

    - #### addIsInCitiesAlternateName

          public void addIsInCitiesAlternateName(String isInCityAlternateName)

    - #### addIsInCitiesAlternateNames

          public void addIsInCitiesAlternateNames(Collection<String> isInCityAlternateNames)

Copyright © 2015. All rights reserved.