ThinkGeo.com    |     Documentation    |     Premium Support

Address Searcher

I want to do a web page that search given city name and district and then locate the result on the Map, İs it possible to do with GetFeaturesByColumnValue or is there an other and fast way to do it and also do it with javascript?. If yes could you please send me some code examples for doing that?


 


 


Thanks,


Ayhan



 


Hi Ayhan,
I think the requirement is very similar to GeoCoding, which allows you to search the street address into GIS location and display it on the map, maybe one of our products “GeoCoder” gis.thinkgeo.com/Products/GI...fault.aspx fits your requirements.
It can make sense to manage the requirements with GetFeatureByColumnValue, but maybe much slower than GeoCoder, the performance will rely on the size of the dbf file. 
As far as I know, the JavaScript can help us collect the search parameters, such as “City name”, “District Name” etc., and send the request to a server, but unable to deal with the processing of searching the features based on Name, because the JavaScript always runs at Client Side.
Any questions please let us know. Thanks.
Johnny

Hi Johnny, 
  
 I will look to GeoCoder product, but I want know if this product needs some special map files or some processes on map files?. Our map files extentions are dbf,ids,idx,shp,shx.  
  
 Thanks, 
 Ayhan

 


Ayhan,
Yes, it needs processed index file created by Geocoder engine. If we just want using “GetFeaturesByColumnValue” to do a searching, I strongly recommend you simplify the dbf file and make sure it just contains the searching information, such as “city name”. In that way, we can speed up the performance.
Thanks,
Johnny

Johnny, 
  
   So is there a tool for process index file by Geocoder engine? I did not see any tool on installation folder of Geocoder. 
  
 Thanks, 
 Ayhan

 


Hi Ayhan,
Sorry for the delay.
Currently, there isn’t a built tool for generating the GeoCoder index file. It requires the codes based on specified data format, such as tiger data format, NavTeq data format etc. Can you give us a snip data? And then we can make something for you.
Thanks,
Johnny  

Hi Johnny, 
  
 I send some map files to Support@thinkgeo.com 
  
 Thanks, 
  
 Ayhan

Hi Ayhan, 
  
  
 I’m sorry that i forgot reminding you to send the files to forumsupport@thinkgeo.com. Anyway, it doesn’t matter, I’m gonna ask for the files from Support guys and let you know as soon as i get something out. 
  
  
 Thanks, 
  
 Johnny

Thanks Johnny 
  
 Ayhan

Hi Ayhan, 
  
 You are so welcome, I have got the data and assign it to our GeoCoder team. Please wait sometime, i think they can give you the answer later. 
  
 Thanks, 
 Johnny

Ayhan, 



I'm sorry to replay you so late, we just built the index file for your attached data files, please get the attachment to check, there are two dbf index files: TurkeyCity.dbf and TurkeyDistrict.dbf. They were built according to your attached turky files and you can geocoder the location use these two index dbf files. 



But there is one more thing need to tell you, before you process the geocode, please make your custom matching plugin first so that the matching plugin can match the address according to the turkey index files. Here is the code sample to make your own matching plugin below: 




 class TurkeyCityMatchingPlugin: MatchingPlugin
    {
        private string dataPath;
        private IndexDbf turkeyDbf;

        /// <summary>
        /// This is the constructor of this class.
        /// </summary>
        public TurkeyCityMatchingPlugin()
            : this(string.Empty)
        { }

        /// <summary>
        /// This is the constructor of this class.
        /// </summary>
        /// <param name="dataPath">The path to the Geocoder data folder.</param>
        public TurkeyCityMatchingPlugin(string dataPath)
            : base()
        {
            this.dataPath = dataPath;
            turkeyDbf = new IndexDbf(dataPath, DbfMatchingPluginReadWriteMode.ReadOnly);
        }

        protected override System.Collections.ObjectModel.Collection<GeocoderMatch> MatchCore(string sourceText)
        {
            Collection<GeocoderMatch> matchItems = turkeyDbf.Match(sourceText);
            return matchItems;
        }

        protected override void OpenCore()
        {
            turkeyDbf.Open();
            base.OpenCore();
        }

        protected override void CloseCore()
        {
            turkeyDbf.Close();
            base.CloseCore();
        }
    }


Then you can call this matching plugin according to the following code: 



 
Geocoder geocoder = new Geocoder(); 
geocoder.MatchingPlugIns.Add(new TurkeyCityMatchingPlugin(@"C:\Turkey\\turkeycity.dbf")); 
geocoder.Open(); 
Collection<GeocoderMatch> result = geocoder.Match(txtSearch.Text); 
geocoder.Close();




If you still have any other questions please let us know, 



Thanks, 



Scott,



TurkeyIndexFiles.zip (51.9 KB)

Hi Scott, 
  
 I added MapSuiteGeocoder.dll to the references but when I compile the project I get the error : “The type or namespace name ‘IndexDbf’ could not be found (are you missing a using directive or an assembly reference?)” 
  
  What Should I do? 
  
 Thanks, 
  
 Ayhan.

Ayhan,


I'm sorry to tell you the IndexDbf class was not exposed, it is just an internal class, but there is a workaround for your issue, please use the following code to try again:



   Geocoder geocoder = new Geocoder();
            geocoder.MatchingPlugIns.Add(new DbfMatchingPlugin(@"C:\Turkey\\turkeycity.dbf"));
            geocoder.Open();
            Collection<GeocoderMatch> result = geocoder.Match(txtSearch.Text);
            geocoder.Close();

 


 


I have tested the code, it also can help you search the address in the index dbf file, If you still have any questions please let me know,


Thanks,


Scott,



Hi Scott,


This time I get another error : MissingManifestResourceException : Could not find appropriate source for Culture or Neutral Culture.



 


Thanks,


Ayhan



Ayhan, 
  
 I got the latest version 4.0.148.0 to try to reproduce this problem what you mentioned above, but I really cannot reproduce it, I would like to ask you which the version of MapSuiteGeocoder? If it is not the latest version, can you get the latest version of Geocoder to test again? 
  
 If you have any questions please let me know, 
  
 Thanks, 
  
 Scott,

Scott, 
  
 I downloaded Mapsuite Geocoder Version 4.0.40.0 Trial, How can I download that version you said. 
  
 Thanks, 
  
 Ayhan.

 


Hi Ayhan,
I think the version 4.0.148.0 is our temporary package, you can get it from helpdesk.thinkgeo.com with your own account.
Thanks,
Johnny

Hi Scott, 
  
  If you intend about version of this product "WebEditionFull4.0.148.0DllPackage.zip". I downloaded it before and I get same error.  
  
 Not : My system : windows 7 ultimate 32 bit Turkish. Visual studio 2008. 
  
 Thanks, 
  
 Ayhan

 


Hi Ayhan,
Sorry for the late. Scott isn’t available these days. I have sent a note about your issue to him.
From the stack trace, I think it’s related to Culture info setting. Maybe we missed the CultureInfo.InvariantCulture somewhere.  Sorry for the inconvenience and Please wait sometime.
Thanks,
Johnny