Re: [MI-L] How to find the Centre-of-Gravity of a Region
I have a definition of 3 polygon centroidtypes here (shifted centroid, geometric centroid, visual centroid): http://www.spatialprojects.com.au/spatialsql_centroids.htm Some more examples and some rules to determine the best choice of centroid for labelling, including calculation of the principal axis for alignment: http://www.spatialprojects.com.au/spatialsql_smartprops.htm The region geometric properties functions are free-use and available from a button pad: http://www.spatialprojects.com.au/spatialsql.htm?exptag=exp2 http://www.spatialprojects.com.au/spatialsql_doc/FNPAD_geom_props.htm The primary use of the alternative centroids noted in spatialSQL is to find valid alternative points for labelling. As can be seen in the examples the choice of one type only would not produce the best results.Allcomputed values are stored incolumns in thetarget table. There are application areas where the geometric centroid or visual centroid could be of use in their own right. The visual centroid is computed with an outputradius of the "largest circle tofit"and thus could be used in an SQL to determine that a chosen polygon and v. centroid satisfy a "minimum distance to neighbour" criteria (habitat?, agriculture?) Regards, Phil Waight. ___Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight - Original Message - From: Marsh, Stephen To: mapinfo-l@lists.directionsmag.com Cc: Obregon, Alejandro Sent: Thursday, October 12, 2006 11:22 PM Subject: [MI-L] How to find the "Centre-of-Gravity" of a Region HI All, Does anybody know how to find the Centre-of-Gravity of a region using MapInfo? The centriod location is based on the Minimum Bounds Rectangle approach, so the centriod location is not the centre-of-gravity of the region. Also, the centriod can be moved for presentation purposes etc. This means that the coordinate extractor tool does not work for my purposes. Any help in this matter will be greatly appreciated!! Many thanks, Stephen =NOTICE - This communication may contain confidential and privileged information that is for the sole use of the intended recipient. Any viewing,copying or distribution of, or reliance on this message by unintendedrecipients is strictly prohibited. If you have received this message inerror, please notify us immediately by replying to the message and deletingit from your computer.= ___MapInfo-L mailing listMapInfo-L@lists.directionsmag.comhttp://www.directionsmag.com/mailman/listinfo/mapinfo-l ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: [MI-L] Complex SQL Joins
A suggestion: Rather than having to create columns of the correct data type for a particular query and then update them with the particular _expression_, create a permanent dummy column in the base tables, say MIJ as logical data type (or something small). Then ... Select ... from tab1, tab2 where tab1.mij=tab2.mij and tab1.fld1=tab2.fl1 + tab2.fld2 The dummy columns and _expression_ will then always overcome the "no join specified..." problem (which appears to be an artifact of an early design decision - performance?). Don't index mij as the extra i/o in checking the index is just overhead in this case. - I do like MapInfo's SQL. Just found recently for those wishing to squeeze the last bit of performance (or functionality), that an SQL such as: Select ... from tab1[,tab2] where and cust_function(acol1,acol2,..) can have cust_function as external (DLL-resident). Also, (as is stated in the MB manual) cust_function can replace standard functions such as cos, abs etc. So if you had quite a bit of logic in cust_function or prefer to write in something other than MapBasic when you have a choice, write cust_function in c, Delphi or similar. In combination with MITAB library, would be possible to pass rowid's and read and process objects as part of the comparison. Using some of the ideas here (http://www.spatialprojects.com.au/spatialsql_custfns.htm, esp pt 8.) , it may be possible to update tab1 or tab2 (or another tab on the fly). "may be" because I know its possible to update tab1,tab2 within MapBasic, but not sure if an external update operation on the same table would work - havent tested that yet. If the SQL was prefaced with a save, it most likely would workas the MI select is only reading, so no transaction files would exist. - Dreams: Now what would be nice is a statement to attach the MapBasic window to the address space ofone (or more!)particular (dormant) MB app with all the declarations (and possibly code)and then write SQLs such as the one above in MapInfo Pro. eg. Someone writes a nice "IsParallel(l1obj,l2obj)" function for 2 lines, which could be declared in an app and accessed from anyMI Pro SQL. Great opportunity for commercial MB authorsOR a MapInfo community (wiki)app could receive those hidden gems accumulated over the last 15 yrs and trapped in purpose-built apps. I suggest this would increase the power of MapInfo SQL n-fold in a short space of time. Also, some major new features in basic functions in MI Pro might shift all those users who are sitting on "the last really useful update" (for me v6.5). Phil. ___Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight - Original Message - From: Hughes, Colleen / Don Mitchell To: mapinfo-l@lists.directionsmag.com Sent: Friday, September 01, 2006 10:26 PM Subject: RE: [MI-L] Complex SQL Joins Hi Evan,I don't think MapInfo allows you to combine columns or to use functions when creating a join. It hasn't worked for me in the past.You could try creating a new column and populating it with either Table2.state+Table2.community in Table2 or Right$(Table1.cmtyno,4) in Table1, and then do a join using this new column.DonMessage: 1Date: Thu, 31 Aug 2006 10:00:58 -0700From: "Evan MacDougall" [EMAIL PROTECTED]Subject: [MI-L] Complex SQL JoinsTo: mapinfo-l@lists.directionsmag.comMessage-ID:[EMAIL PROTECTED]Content-Type: text/plain; charset="us-ascii"I am trying to join two tables in MapInfo where there isn't a column-to-column match. In Oracle SQL I can do a join on substrings of a panel or on a joint _expression_ of two columns matched to one.However, when I try this in MapInfo it gives me an error about my join not being valid.Table1 cmtyno (char 6) = Table2 state (char 2) + Table2 community (char 4).So I try this as my join:Table1.cmtyno = (Table2.state+Table2.community)MapInfo throws me an error saying it's an invalid join.Then I try this as my join:Right$(Table1.cmtyno,4) = Table2.communityThis also causes MapInfo to give me and error about an invalid join.Is it possible to join these two tables without creating new columns?Am I just getting my syntax wrong or have I found a limitation in MapInfo?-Evan MacDougallGIS SupervisorNationwide TotalFlood Services Inc. (NTSI)(a wholy owned subsidiary of Capital Title Group)[EMAIL PROTECTED](800)736-3109 x3681"Gentlemen, we may not make history tomorrow, but we shall certainly change the geography." ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
[MI-L] area calculation discrepancies
In MI 6.5, the area seems to be affected by the "Set Resolution" value and unless specified for the current session MapInfo uses the default of 100 for area calcs. For a circle object, radius 1km, UTM projection: set resolution 100 -- area is 3.141598set resolution 100 -- 3.13956Update Untitled Setcomp_area = format$(CartesianArea (obj, "Sq km"),"#.") Difference is ~0.07%. So: 1. Area() function uses SphericalArea(), even in a cartesian coord system. Seems a bit odd.2. Objects get converted from native to region before area calcs are performed and "Set Res" value is used. The large resolution slows the update considerably so a small default makes sense (with a doc. note regarding the accuracy?). I suppose the fact that double click on a circle, rectangle and rounded rectangle only provides basic dimension properties and not area or perimeter is a hint. MapBasic manual ref on "set resolution" - probly should mention impact on CartesianArea() function as well: By default, MapInfo assigns 100 nodes per circle when converting a circle or arc into a region or polyline. Use the Set Resolution statement to alter the number of nodes per circle. By increasing the resolution setting, you can produce smoother result objects. The Set Resolution statement affects subsequent operations performed by the user, such as the Objects Convert to Regions command and the Objects Convert to Polylines command. The resolution setting also affects some MapBasic statements and functions, such as the ConvertToRegion( ) and ConvertToPline( ) functions. The resolution setting also affects operations where MapInfo performs automatic conversion (e.g. Split, Combine). Phil. - Original Message - From: Bob Young To: COLDREY, Cathy (Bristol) ; mapinfo-l@lists.directionsmag.com Sent: Thursday, August 24, 2006 8:41 AM Subject: Re: [MI-L] area calculation discrepancies Hi Cathy I hope the following is of some use, although even taking into account these factors I get another set of numbers none of which match exactly! The corrrect area mathematically ( PI * R * R ) is 3,141,593 for a non earth projection ie as a CAD system would compute it. You can ask MapInfo to compute either the spherical area or the cartesian area. If you want to get a "mathematical" match with PI * R^2 then you need to use cartesian. When using update column use CartesianArea function rather than Area function (which returns spheroid area). ( This does work accurately for rectangles and polygons). Thereare also two ways you couldcreate the circle. The best result should come form holding down shift key and drawing an ellipse. I say should because this would be stored internally in MapInfo as a centre point and a radius, and so should be able to be computed accurately. If you use this method the double click doesNOT return the area, so I suspect you did not use this method. The alternative method is to use the buffer command, and set the smoothness to maximum of 100. A snag with this method is that this is not stored as a true circle but as a threepenny bit iewith 100 flats. The area will therefore not be correct. This type of objectWILL report its area with adouble click. If you have imported theobject from some other system this might also account for why your area is reported with a double click. With either type of object, using cartesian ( or spherical ) I cannot get an exact match but I get closer agreement to the correct cartesian value of 3,141,593 with 3,139,567 for a true circle ( shift key method ) and 3,139,526 for buffer of a point method with maximum smoothness ( both got from update column and CartesianArea function). A 1 km squarereturns exactlythe correct answer of 1,000,000 providing you stick with cartesian. You can set the map window to use cartesian using Options... off the map menu. You can reset the radius etc by double clicking when the layer containing the object is editable. Hopefully someone will throw some light on the 0.07% error on the circle. Regards Bob - Original Message - From: COLDREY, Cathy (Bristol) To: mapinfo-l@lists.directionsmag.com Sent: Wednesday, August 23, 2006 5:34 PM Subject: [MI-L] area calculation discrepancies Hi List, Does anyone have much experience in calculating areas of polygons or circles in MapInfo? My problem is this. I have a 1 km radius which has exactly a diameter of 2km, meaning a 1 km radius. Now mathematically the area of theis would be 3136860 square m. But if I use the update column option the number I get is 3118630 square m or double click on the object I get 3119000 square m. I am using British national grid projection. Can anyone explain to me why I
[MI-L] MapBasic and Code Sharing
There are currently 2 common methods of distributing usable code in the MapBasic world: the MBX or .MB source. The MBX will be free or for a fee and the accompanying licence will generally indicate the terms of use. (PS: I have yet to see a programlicence saying "please feel free to reverse engineer this and do with it as you will".) MapInfo's approach to maximize market back in 1990? was to provide mapinfo pro/mapbasic on mac, unix and win, but for obvious reasons (then) without an IDE of any sort, without accompanying "libraries" (except maybe for auto_lib?), but with some sample applications - the reasons being (IMO)the relatively large effort to provide an IDE on all platforms compared to the development cost of getting the "basic" compiler to market. Then around v4?, mac/unix was dropped and the argument for not providing an IDE for win probably changed to "we are already selling x000 copies a year , an IDE wont increase that by much" etc. Also MapX came along for "serious programming". Anyway, the significant thing that distinguishes MB development (from my point of view) from other environments is not the lack of an IDE , but the factthat whilst there isan equivalent to the component: ocx/dll, NO ONE uses this as a distribution method. The equivalent is the MBO with an accompanying include file. This method is pretty much identical to a developer writing something useful in an MSlanguage, packaging it as an OCX, providing some doco and selling it. The MS component developer would not consider distributing source code in general, as he wants to protect his ideas and make a buck, but he also want to package it so it is most useful to his target market, being other developers. There are probably many reasons why the MBO distribution method is not used. I would think mostly that the usual in-house development project doesnt budget for some return on the development costs through distribution of selected pieces of the built code. The other is that it is not pushed as a "feature" in MapInfo marketing. There is the issue of adding some sort of registration and copy protection if its not for free use. But why should MBO+includes be distributed, compared to source or MBXs? Because well documented function and sub calls in a tool kit become a huge cost saver for the average development project. Source is a nuisance, because as soon as it is copied it becomes a maintenance problem. If source has significant intellectual content, who would want to give that away?A distributed MBO file on the other hand has documented inputs and outputs, and must be designed to work as a "black box". There is also an implication that the author will maintain it and provide updates.An MBX is not accessible to a developer except for the "Run Menu Command ..." method. I shudder to think of the amount of "reinventing the wheel" that must happen with MapBasic. The curious thing is that although MapX has been around for nearly as long as MapBasic, there is also little (no?) packaging of MapX content into sharable modules. MapX objects can be passed to, for example, an ActiveX exe, with the licence requirements being met by the calling program. Cant see anything changing with MapXtreme .Net unless someone sees that there is benefit/a $ to be made by doing what MI does. Phil Waight. ___Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight thumbs up.gif Description: GIF image ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
[MI-L] Product announcement - LayMan v3.05
LayMan has some fixes and enhancements: http://www.spatialprojects.com.au/layman_whatsnew.htm?exptag=ftrsexptag=changes Polyline and region object details (polygon,node,coordinates) can be browsed (one node per row) and edited, one object at a time. The previous update in April improved the handling of large numbers of open tables. Phil Waight. __Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: [MI-L] Web Page Building and Hosting
A few ideas: Google your way to the cheapest domain registration / hosting package and work up from there. Unix hosting seems to provide the lowest cost and yet with most facilities you'll need. Low cost also means minimal support, so be prepared to do your own problem solving, aside from basic operational issues. Server up-time with these packages can be an issue also - worth checking. (I pay ~AU$100 per annum for my site). Look for web page templates that suit your purposes. For ease of maintenance, and once you have a basic page design, the ability to include menus, headers and footers using SSI or equivalent (Server Side Includes) is important as it saves duplicating html in each page. (SSI looks like -- !--#include file="yrmenus.htm" --) You will need to search for help on setting this up as for this to work, particular file priviledges need to be set on the server for each included file. Gather _javascript_ from wherever you can find it to extend the interface. You can ease into this gently by finding a complete working js file and try some of the calls in your HTML. Then extend and change as you become more comfortable with java.One good source of highly functional _javascript_ is Twin Helix Designs ... http://www.twinhelix.com. From IE, as well as ViewSource to see what someones html looks like, you can find any referenced .js file in yr "temp internet files" folders. Use style sheets (.css) to minimize the formatting with each HTML tag (even though the .css syntax is hard to come to grips with). Test your pages with say Firefox Opera as well as IE when you get more sophisticated with content. IE7 beta 2 seems to be quite solid (compared to the first release) - the tabbed pages and new handling of favourites is a productivity plus over IE6. If you have problems with _javascript_, the js console in Firefox and particularly Opera seems to better than IE for locating problems (dont know about IE7 yet). The html and java compatibility between browsers these days is much better than when it was just Netscape Nav and IE. Although some MS products generate HTML that is unreadable by anything other than IE (Visio,word). Google provides some useful info on how to structure your pages to maximise search results. Title tag content is important, less so meta keywords it seems. Key phrases are more important than words. Well structured pages that display quickly but with lots of content provide the best results in this regard (and the best browsing experience IMO). You can use _javascript_, DIV .. style= .. tag to include nested topics that are hidden on first paint but display with a click. THen the user is not inundated with scrolling pages of guff, the content loads in the background whilst the first click is contemplated,and a click on a topic expands the appropriate paragraphs. The beauty of this approach is that the clicks dont result in full page repaints (which I find the most irksome part of web browsing). Look at www.spatialprojects.com.au/spatialsql.htm source to see how the nested topics work. The ?= attribute in a URL can be trapped (in _javascript_) and allow you to jump to a specific location in a page (eg. http://www.spatialprojects.com.au/mbtestbench.htm?exptag=wotsnew). THis is quite neat as page links to a particular (expandable) topic improve navigation significantly. I've seen comments that multi-frame pages are not good form but cant recall why - security ?. With SSI, you can easily include links (in a menu say) to yr site pages that have changed recently. This approach is more user friendly than having to traul through all pagesto find updated information. Find a good HTML editor (I use VS .net which is great) and an FTP tool (my 1996 copy of WS_FTP still works nicely) and a TAG clean/check utility (http://tidy.sourceforge.net/is one). MS Word (2003) generates unbelievable strings of attributes on tags and I would avoid it like the plague - but others might have had a more favourable experience with it. (I think Word 97 is a better product than recent versions - curious that Word 2003generates separatewindows for documents but IE7 is now reverting to the all-in-one Tabbed design - a la Word 97!!). Set up a mirror of your site on yr own system for testing. Be wary of local paths (to image files,html files) substituting for the correct URL. I havent set up a web map server recently so will leave those comments to others. aspmap is easy to set up though.A first start might be a series of KML links on a page and let GE do the work or a link to multimap etc. Provide links tooriginal sources of scriptsetc, so others (and authors)can benefit. HTH Phil Waight. ___SPATIAL PROJECTSEmail : [EMAIL PROTECTED]Web: www.spatial
Re: [MI-L] Questions on Combining two WOR
You could try LayMan at www.spatialprojects.com.au\layman.htm It doesnt have map merging, but I thought I had seen a reference to this type of app in http://www.directionsmag.com/files/. Quick search doesnt show anything - probably because coding a merge using MapBasic LayerInfo and "Add Map/Set Map" would be almost as tedious as processing 2 wor files to merge the map statements. Now what might be nice in MI Prois default (named?)styles and label info saved with a table as metadata, so all you would need to do is "add map .. layer..". Google on "mapinfo workspace (merge OR combine) map application" gives 12,600 results. 'mapinfo ("merge map" OR "combine map" OR "map merge" ..) application' gives58 results, none at first glance applicable. LayMan does have the ability to Load a workspace for step execute, run in safe mode, or simple user editing (use a text editor for multi-line manipulation). Also allows workspaces to be run consecutively, skipping references to "open table" for those already open. If you have managed to create a merged map in a wor file with lots of layers, LM will reorder layers in an "optimal" order. Most recent version info (update last week): http://www.spatialprojects.com.au/layman_whatsnew.htm?exptag=ftrsexptag=changes Regards, Phil Waight. ___SPATIAL PROJECTSEmail : [EMAIL PROTECTED]Web: www.spatialprojects.com.auSkype: PhilWaight - Original Message - From: Bratcher, Jeff To: 'mapinfo-l@lists.directionsmag.com' Sent: Tuesday, April 11, 2006 7:51 AM Subject: [MI-L] Questions on Combining two WOR I have two states from StreetSmart Data. They both use many tables, with custom setting on every level, depending on your zoom status. I want to combine them into one map, but I cannot open the second into the mapper of the first. They always appear in different windows.I was able to import the tables into the first map, but the custom levels were gone. I spent alot of time reconfiguring the tables to get the map to look right. Too much time.So I then looked at editing the WOR file itself. I open both WOR files using WordPad, and then copied all the references from the second table into the first table. None of the tables use the same name, and I brought all the custom layers over and renumbered them to fit the the combined WOR. BUTWhen I opened the combined file, the file was very buggy and kept trying to put PLACENAME on everything, so much so that it looked like a tornado was forming on the screen, complete with spinning off other swirling masses of PLACENAMES!Does anyone know of the trick of combining two WOR's, when the "open into current mapper" does not work? Maybe also a tip on how to edit a WOR directly?Maybe I am missing a bit of code or something. Perhaps using WOrdPAD to make the edits introduced a problem. Maybe there is a way to open a WOR as a browser in Mapinfo?Any help would be greatly appreciated!ThanksJeff BratcherPresentation TechnologiesCredit-Suisse==Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html==___MapInfo-L mailing listMapInfo-L@lists.directionsmag.comhttp://www.directionsmag.com/mailman/listinfo/mapinfo-l ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: [MI-L] Complicated Buffer Query
As an alternative to Voronoi polygons, spatialSQL will solve this style of query. Input polygons with some touching edges, buffered: www.spatialprojects.com.au\images\median2.jpg Median line update: www.spatialprojects.com.au\images\median3.jpg Watch it happening: www.spatialprojects.com.au\images\median.avi More on median lines: www.spatialprojects.com.au\spatialsql_median.htm Median lines on the function pad are free (2 selected objects)As a general update, the registered version is required. Phil. ___SPATIAL PROJECTSEmail : [EMAIL PROTECTED]Web: www.spatialprojects.com.auSkype: PhilWaight Hi folksI am confronted with a bit of a problem and was wondering if anybody hadany clues as to how I might get around it...The situation is this:I have a table with complex polygons that I need to buffer - only I needto maintain any existing boundaries between polygon objects - I can'thave any overlaps.Is there a way to run a complex buffer that does not buffer any linesegment that is a boundary between existing polygons?I had thought of copying my existing table, converting it to polylinesand somehow removing all lines that are unique, (theoretically leavingme with only lines that are a boundary between 2 polygons) and usingthis table as a "cookie cutter" on the standard buffer result, but thatwill still leave me with loads of "slices" of polygons I will then needto delete... and I'm pretty sure there are other problems with this ideathough that I don't even want to think about...Any help would be much appreciated!CheersMathieu ApersMapping Co-ordinator Letterbox Channel 79 Hugo Johnston Drive, Penrose Private Bag 92050 Auckland Phone 09 574-4449 Fax 09 574-4415 Toll Free 0800 LETTERBOX 0800 538-837 This email with any attachments is confidential and may be subject to legal privilege. If it is not intended for you please reply immediately, destroy it and do not copy, disclose or use it in any way. ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
[MI-L] LayMan v3.02
The most recent changes to LayManimprove the ability tolocate tables in the catalogby type and contents. I have about 6000 tables and 500 workspaces on mynetwork and whilst there are a few obvious directory trees to go looking for things, every project has its own local data set and naming conventions dont help a lot. The key improvement is a catalog filter by table type (base, seamless,image..), object type (symbol,polygon etc.) and whether the table bounds intersect the current front Mapper. So a very large list of tables can be quickly trimmed to the ones relevant to the current task. Table bounds may be displayed on a map from tables, layers and the catalog. http://www.spatialprojects.com.au/layman_whatsnew.htm?exptag=ftrsexptag=changes and http://www.spatialprojects.com.au/layman_solutions.htm Most of the enhancements are available on a 30 session trial basis, then pay and register. Phil Waight. ___SPATIAL PROJECTSEmail : [EMAIL PROTECTED]Web: www.spatialprojects.com.auSkype: PhilWaight ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
[MI-L] At the risk of posting for a 4th time on the subject ...
Apologies to anyone who received my message more than the intended once. My reference as to whether messageswere receivedis http://www.directionsmag.com/mapinfo-l/IndexMapInfoL.htmwhich shows 1 message, after the server problem was resolved. Phil Waight. ___SPATIAL PROJECTSEmail : [EMAIL PROTECTED]Web: www.spatialprojects.com.auSkype: PhilWaight ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
[MI-L] LayMan v3.02
The most recent changes to LayMan improve the ability to locate tables in the catalog by type and contents. I have about 6000 tables and 500 workspaces on my network and whilst there are a few obvious directory trees to go looking for things, every project has its own local data set and naming conventions dont help a lot. The key improvement is a catalog filter by table type (base, seamless,image..), object type (symbol,polygon etc.) and whether the table bounds intersect the current front Mapper. So a very large list of tables can be quickly trimmed to the ones relevant to the current task. Table bounds may be displayed on a map from tables, layers and the catalog. http://www.spatialprojects.com.au/layman_whatsnew.htm?exptag=ftrsexptag=changes and http://www.spatialprojects.com.au/layman_solutions.htm Most of the enhancements are available on a 30 session trial basis, then pay and register. Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
[MI-L] LayMan v3.02
The most recent changes to LayMan improve the ability to locate tables in the catalog by type and contents. I have about 6000 tables and 500 workspaces on my network and whilst there are a few obvious directory trees to go looking for things, every project has its own local data set and naming conventions dont help a lot. The key improvement is a catalog filter by table type (base, seamless,image..), object type (symbol,polygon etc.) and whether the table bounds intersect the current front Mapper. So a very large list of tables can be quickly trimmed to the ones relevant to the current task. Table bounds may be displayed on a map from tables, layers and the catalog. http://www.spatialprojects.com.au/layman_whatsnew.htm?exptag=ftrsexptag=changes and http://www.spatialprojects.com.au/layman_solutions.htm Most of the enhancements are available on a 30 session trial basis, then pay and register. Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: [MI-L] Multi-page PDF output
Adobe Distiller is the tool for the job (acrodist.exe) and postscript printer driver. 1.. In your MapBasic appliation, you printwin each page as a postscript file, and build a list of names for processing. This is trickiest step, as you need to wait til the print file's available and rename it from the standard postscript output location. There are various steps, but once fileexists succeeds, I loop on a open, pos to EOF, read location, close and wait for the EOF location to remain unchanged. (There may be a system call which does this more succinctly) 2.. Create a Distiller job file with commands for thumbnails and listing the page file references. You can create hierarchical, nested bookmarks if you have subset geography to process. 3.. Run Distiller from MapBasic using ExecuteandWait 4.. Clean up all the .ps files. The whole thing is non-trivial. There are a number of timing issues and the masses of temp tables no doubt created need to be closed and deleted along the way, but once running works consistently. Regards, Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au Skype: PhilWaight - Original Message - From: Bill Thoen To: mapinfo-l@lists.directionsmag.com Sent: Friday, February 10, 2006 3:09 AM Subject: [MI-L] Multi-page PDF output I have a MapBasic application that prints maps from layout windows to a PDF driver and all seems to work as far as that goes. However, I've been asked if there is a way when printing several maps in a batch mode, if I can send them all to the same PDF output file, and create a sort of multi-page PDF file. Does anyone know how this can be done using MapBasic? Or are there special PDF printer devices that can allow this? - Bill Thoen ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: [MI-L] CHECKING LINE CONTINUITY
Peter, This may help ... http://www.spatialprojects.com.au/spatialsql_doc/UPD_Combine_disjoint.htm Phil Waight ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: Peter Hatton To: mapinfo-l@lists.directionsmag.com Sent: Wednesday, February 01, 2006 4:05 PM Subject: [MI-L] CHECKING LINE CONTINUITY Hi all, I have a datset consisting of 1495 polyline objects ( 0.5m contours ). Can someone advise me how I can verify the continuity of the linework ie: ensure that there is no fragmentation / break in any of the polylines. I am aware of OBJECTS . SNAP / THIN but this doesn't identify the lines that are broken. In my case I need to identify the breaks in the linework and then work through the individual areas so that I am sure that the correct lines are joined .. I think the OBJECTS . SNAP / THIN option with the tolerance option has the possibility of joining polylines of different value / height without having control apart from the possible hit and miss of this option. Many thanks for in advance . Regards Peter Peter HATTON GIS Officer Greater Taree City Council 2 Pulteney Street TAREE 2430 phone 02 6592 5227 e-mail [EMAIL PROTECTED] gov.au This email and any files transmitted with it are intended solely for the use of the individual or entity to whom they are addressed. Greater Taree City Council is a government organisation and is subject to Freedom of Information legislation. You must assume that any material sent to Greater Taree City Council may be accessible by persons other than the intended recipient. The contents of this message may express views and opinions not necessarily shared by Greater Taree City Council. ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: [MI-L] GElink KML export
You need to select the objects for export in MapInfo first. Then the vector data exports OK. Also, for general information, the MBX is patchable for earlier MI versions, but then only the vector export works as the raster must use a recent MI feature. If you have an ordered set of lines or points the Play Tour feature is nice visualization method. Phil Waight. - Original Message - From: Pandya, Shvetketu To: 'MapInfo-L@lists.directionsmag.com' Sent: Friday, January 20, 2006 7:41 AM Subject: [MI-L] GElink KML export I am trying to export selected object in map window (object selected is only one for testing) from MIP 8.0 in KML using GE link utility, but I am not able to see any export and MIP program is not responding/hangs up. I am not having any problem if I export map window as raster image (option 1) and I can see this jpg in Google earth. I am using free version of Google earth. I will appreciate any help on this. Regards, Shvet. ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l ___ MapInfo-L mailing list MapInfo-L@lists.directionsmag.com http://www.directionsmag.com/mailman/listinfo/mapinfo-l
Re: MI-L smallest enclosing rectangular box
An approximate but fast method might be (havent tried it): 1.. Determine principal axes of region. (fast to calculate in c) 2.. Rotate region to align PA with X-Y axes. 3.. Determine MBR of rotated region. 4.. Rotate MBR back to original location. This will work well on shapes with clear axes of symmetry (where it is possibly of most use), but for arbitrary shapes, less so. The principal axes like (true) geometric centroid, visual centroid should be storable as a basic object property (hope MI .net might facilitate this). HTH Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: Rinus Deurloo To: mapinfo-l@lists.directionsmag.com Sent: Thursday, October 13, 2005 5:46 PM Subject: MI-L smallest enclosing rectangular box Dear all, Does any one know a fast algorithm for calculating the smallest enclosing rectangular box around a region? I do not mean the MBR, because often this is not the smallest, due to its fixed north-south orientation. I mean the box that is independent of orientation. Thanks in advance. Rinus Deurloo University of Amsterdam Dept. of Geography and Planning The Netherlands. - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 18249
Re: MI-L smallest enclosing rectangular box
Nick, The max. radius contained circle can be found. Its centre is the visual centroid. A method that I'm interested in following up sometime is mentioned here in note 4: http://www.spatialprojects.com.au/spatialsql_centroids.htm The principal axes are located at the geometric centroid which may be outside the region. However the VC is already an ideal internal label point. The prinicpal axis alignment at the VC should provide a good centre for rotated labels if one exists. The 2nd moment of area provides a possible preferred alignment axis (minimum value of 2nd moment). The relative values of 2nd moment for each axis is a test for whether a rotated label would look sensible. (eg. if the values are the same as in the case of a rotated square, horizontal alignment is best) The length of line through the VC at the PA angle intersecting the region is a test for label fit. The centre of this line could be a better origin point than the VC in some cases. Might sound a lot of work but all this should be calculated once for a region and stored for use in labelling etc. Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: [EMAIL PROTECTED] To: mapinfo-l@lists.directionsmag.com Sent: Wednesday, October 19, 2005 9:36 AM Subject: Re: MI-L smallest enclosing rectangular box A twist on this question. Is there a way of calculating the maximum internal rectangle? That is, the largest rectangle (of any angle) that fits inside a polygon. Such a thing would be useful as a text box for labelling. nick Opinions contained in this e-mail do not necessarily reflect the opinions of the Queensland Department of Main Roads, Queensland Transport or Maritime Safety Queensland, or endorsed organisations utilising the same infrastructure. If you have received this electronic mail message in error, please immediately notify the sender and delete the message from your computer. - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 18381
Re: MI-L Label Placement Tool
Kara, For background, here are some references on labelling as a GIS problem: http://www.spatialprojects.com.au/splinks.htm?exptag=refexptag=lbl In other words, until we have 100+ GHz computers on our desk and memory to hold all data, solutions are going to require batch-style processing.(Even then, a city's worth of processing is never going to be as fast as a simple autolabel). An important characteristic of current generation solutions to look for is that the output is dynamic. This means that once a geographic area is processed, the feature styles and labelling should be available for normal interactive map display in desktop and web applications through all display scales. The end user should see display performance about the same as for a conventional autolabelled map. Making a few assumptions here but: Considering that the layers you want improved labelling on are usually static (updates for streets, zipcodes and suburbs once a year? ), and your own layers are most likely simpler point layers, one scenario is: process label layers for the base layers once and then combine this output with your own layers, giving them label priority and save to workspaces. Although I havent reviewed EverName and MapText recently, they should provide dynamic output of processed workspaces. Alternatively, put pressure on your data providers to deliver quality label processed street and boundary tables and workspaces. There is no reason why data providers cant do significantly more value-add before delivering data (eg. using a product such as spCarto). (Some of the data I receive for processing for my customers is in a truly woeful format! eg. common-attribute rivers and roads that are not a single polyline object between intersections). Street data providers (IMO) should provide a set of clean tables optimised for query and analysis, a set of tables with display handler applications (if needed) for quality label display, and workspaces to suit. My own applications deliver solutions using this approach: http://www.spatialprojects.com.au/spcarto.htm is designed primarily for urban street and boundary output. Workspaces and geosets allow reuse in MapInfo Pro, MapX or with a little more work, MapXtreme. http://www.spatialprojects.com.au/polylabel.htm is designed for general polyline and region labelling where character-alignment to the feature produces a much better result than word or string alignment. http://www.spatialprojects.com.au/spatialsql.htm?exptag=exp2exptag=labelfns corrects point and region label layers for clashes with other features and labels. This uses an iterative, greedy approach as described in the first reference above. Although the output can be saved in workspaces (and zoomed etc.), the absolute placement is ideal for the chosen display scale only. HTH. Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: Kara Schneider To: MapInfo-L@lists.directionsmag.com Sent: Wednesday, October 05, 2005 1:31 AM Subject: MI-L Label Placement Tool To Whom It May Concern: I am a MapInfo user working in the GIS Department at Blockbuster Inc. Our department is in the process of locating a good quality label placement tool to use with MapInfo Professional. The main purpose of finding this tool is to save time in the labeling process of creating very extensive detailed maps. We have tested two label placement tools used in MapInfo, for instance, SmartLabel by Map Text and EverName by EverMap. SmartLabel is able to mark streets, unlike EverName, but it still takes an extreme amount of time to run the application, and the results are not what I anticipated. Our main concern when creating detailed maps is the time consumption toward labeling streets and cities to make them visually appealing. We need a product that will label these items quickly with precision, and no overlap. If you know of any products that fit these criteria, please inform us. Thank you. Kara Schneider Development - GIS
MI-L Product announcement - LayMan version 3.0
LayMan version 3.00 is a major release. It is now a Microsoft .NET client application and an OLE client of MapInfo Professional. LayMan is designed to facilitate navigation between MapInfo windows and enhance the traditional window, table, map, layout and workspace functions within MapInfo. Basic use is free with a number of advanced functions requiring registration. See information about LayMan here: www.spatialprojects.com.au\layman_whatsnew.htm Download here: www.spatialprojects.com.au\layman.htm Phil Waight. ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au
Re: MI-L MapBasic Text object question
The method I use is to recreate the object in memory using all the attributes of the object you're querying, at its shifted position. oText = CreateText( window_id , x , y , text , angle , anchor , offset ) and otextMBR = mbr (oText) The other reason to do this (recreate oText) is if you need the rectangle of a rotated text object. The method here is to get the MBR of the unrotated object and then rotate the MBR about the anchor point. Regards, Phil Waight. -Original Message- From: Canfield, Andrew [mailto:[EMAIL PROTECTED] Sent: June 20, 2005 17:26 To: mapinfo-l@lists.directionsmag.com Subject: MI-L MapBasic Text object question To all who may know, Using Mapbasic how do I get the minimum bounding rectangle for just the text of a text object when it has an arrow pointing to something. Using MBR() or using ( ObjectGeography(Lyr.Obj,1), ObjectGeography(Lyr.Obj,2), ObjectGeography(Lyr.Obj,3), and ObjectGeography(Lyr.Obj,4) to create a rectangle ) both yield the same thing. They give me the MBR for the entire entity including the arrow. I need the MBR of just the text. Does anyone know how I can accomplish this? Thank you, Andy
Re: MI-L Visual Centroid
Phil, spatialSQL (www.spatialprojects.com.au\spatialsql.htm) provides an interactive and program-called visual centroid function. The help file documents the menu and button pad ids to achive this: . Define spSQL_CREATE_VISCENTROID 3107 'Create region Visual Centroids for selected objects ... select some regions ... Run Menu Command Id spSQL_CREATE_VISCENTROID ... As this is one of the free functions, it does not require program registration. Regards, Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: Phil MacAuley To: 'MapInfo-L@lists.directionsmag.com' Sent: Tuesday, May 10, 2005 3:55 AM Subject: MI-L Visual Centroid Hello, I am attempting to incorporate a custom function into an existing MBX that, in addition to what the MBX already does, will allow me to determine the visual centroid on a polygon. (That is, the centroid of the largest circle that fits within a polygon.) Can anyone help me with the logic to go about determining the visual centroid? I have been playing with increasingly larger negative buffers, which return increasingly smaller regions, but I am having issues with setting the buffer size, particularity with irregularly shaped polygons. Any thoughts? Thanks in advance, Phil
Re: MI-L Draw Radials
Sid, MapInfo 7.5 and later allows you to do this: 1. Draw 1 line horizontally, long enough to intersect your region at all points when rotated. 2. Open MapBasic window: dim nrows as integer 3. Copy/paste line. You need something like: nrows = tableinfo(yourtab,8) 'no. rows in tab Select * from yourtab where rowid=nrows into lastrow'selects last row insert into yourtab (obj) select obj from lastrow close table lastrow Select * from yourtab where rowid=nrows+1 into lastrow'rselect new last row 4. Right click Edit Objects Rotate pick anchor from map; lock anchor; 1 deg. You might have to play with this a bit to get it right. THis will paste the correct code into the MB window. 5. Close table lastrow 6. Select the lines in steps 3-5 from mb window and hit ENTER 359 times ;-) 7. When finished, select all your lines and SET TARGET. Select your region and Erase Outside. 8. Add a column to your Lines table as RadialLength say. Update yourtab set RadialLength = ObjectLen(obj,units) There may be an eaasier way to copy/paste line repeatedly, but cant think of one right now. (edit Objects Offset has an option to copy but not sure if you can set the anchor at the desired end). You could try selecting, say 10 deg worth of lines in step 3. If you want each radial identified properly, add and id variable and an id column to the INSERT at step 3. Only problem is you may need to do some editing if any line intersects the region in more than 2 places (or that might be what you want). If you dont have 7.5, it is still possible with the CreateLine( x1 , y1, x2 , y2 ) at step 4. and some trig to calculate x2,y2 each iteration.. Phil Waight. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: Sid C To: MapInfo-L@lists.directionsmag.com Sent: Thursday, May 05, 2005 1:56 AM Subject: MI-L Draw Radials Hi, How do I draw radials at each degree from any given point in a region, and calculate the distance between the point and region boundry. Thanks in advance Sid - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 16357
MI-L PolyLabel update
There is a new version at www.spatialprojects.com.au/polylabel.htm This provides: 1. problem fixes and has been tested on MI 7.8 2. persistent button pad location 3. improved documentation, including the method for creating mixed PolyLabel and conventional autolabel output to satisfy the full range of display scales. Free use for single selected line/polyline/region at a time. Phil Waight. ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au
MI-L spatialSQL Update
There is a new version at www.spatialprojects.com.au/spatialsql.htm This provides a free set of functions on a button pad including: 1. Median line between two selected intersecting or non-intersecting objects of any type. 2. Visual / default centroid of selected polygons 3. Various line buffer types: square ends, round ends, half width (as left/right/N/S/E/W). The button pad provides functions previously available within spatialSQL queries or menus as stand-alone tools. Phil Waight. ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au
Re: MI-L MapInfo's Map Quality Gets Panned in the News
Doing street labelling properly requires topology. Segmented streets need to be combined, the extent of the whole feature with common attribute for labelling (eg. street name) needs to be known. One view of MapInfo Pro's feature set is that if it cant be done in real time and the user see immediate results, it ain't worth doing. Possibly, MI RD/mktg considers that once topology needs to be built for a purpose, it needs to be retained (in TAB) , supported in export, import and by every other feature and function that is going to fall over it. In other words, it's just too hard. The curious adoption (and subsequent discard) of SpatialWare Topology Manager on the desktop may be a factor , along with the new relationship with Radius Topology - it looks like MI are dabbling but fearful of jumping in with their own products. The MI product line has sort of proven to date that you really dont need topology to satisfy business geographics, but there's always exceptions. My view of topology is that it's just another form of metadata, built to describe a data set more completely, rebuilt when invalidated by an edit, used by whatever application needs it. It doesnt have to impact the performance of all the great features that have got by without it so far. Does require better management of the map data environment though. Phil. ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.spatialprojects.com.au - Original Message - From: Ryan Morgan, Aerials Express To: mapinfo-l@lists.directionsmag.com Sent: Sunday, March 06, 2005 7:01 AM Subject: RE: MI-L Réf. : MI-L MapInfo's Map Quality Gets Panned in the News My Favorite part of the article: I am no cartographer and I make ugly maps too, but in business every map is part of selling an idea, or a location, etc., and 'pretty always wins.' So true! I'm spoiled, I get to see millions of colors (in the aerial photography) on our maps. Vector maps in MI need more capability...And how about a decent label tool? Back me up guys, you know you love ArcMap's auto-label function...though neither wrap around a polyline, i.e. curved street! Just my 2 cents, Ryan Morgan Aerials Express www.Aerials-Express.com -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Friday, March 04, 2005 9:28 AM To: [EMAIL PROTECTED]; mapinfo-l@lists.directionsmag.com Subject: MI-L Réf. : MI-L MapInfo's Map Quality Gets Panned in the News Thanks for the link, I agree fully with the article. Our first MapInfo version was 4.5 and it hasn't changed much in this respect untill now. The layout window which can represent different parts of a wider map is a wonderfull invention. However there are many graphical problems : In thematics maps, the legends are never correctly aligned (I've had trouble with our pre-press specialist). You have to accept centered layout without option to align things left or right. MapInfo doesn't offer any color management and when you have to convert your maps in the CMYK world, this is a pain. I understand that color management could be left for other imaging software. But MapInfo should at least offer CMYK palettes or HFS palettes. Christiane Roh Vient de paraître : Lausanne à la carte, le nouvel atlas lausannois Christiane Roh - Section Statistique Lausanne Statistique Lausanne - SCRIS Service cantonal de recherche et d'information statistiques Rue de la Paix 6, CH-1014 Lausanne tél.: +41(021) 316 29 51 fax : +41(021) 316 29 50 Bill Thoen [EMAIL PROTECTED] 04.03.2005 15:40 Pour : MapInfo-L mapinfo-l@lists.directionsmag.com cc : Objet : MI-L MapInfo's Map Quality Gets Panned in the News Good grief! The general public is finding out what we've all known for quite some time -- MapInfo's graphic quality hasn't improved much since the days of MapInfo 3.0! See Hal Reid's article in Direction Magazine, A Number of Colors (http://www.directionsmag.com/article.php?article_id=776trv=1PHPSESSID=f85 85645039fae89c65c89bd6e680378.) We don't want to get pegged as cartoon cartographers, do we? - Bill Thoen - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 15522 - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 15546
Re: MI-L Vendee Globe - around the world , map by Esri
Warren, I think its about time MapInfo and (by the looks of it ESRI) did provide such a projection (BTW thanks for the variable central meridian description). And until then, its not difficult for developers to do the zoom handling and data duplication to handle it. If GPS navigation systems worked from -180 to 180, they wouldnt sell one. From a user perspective its not friendly when a navigation track stops because of a GIS deficiency. thnx. - Original Message - From: Warren Vick, Europa Technologies Ltd. To: 'Phil Waight' ; [EMAIL PROTECTED] Sent: Tuesday, December 21, 2004 9:19 PM Subject: RE: MI-L Vendee Globe - around the world , map by Esri Hello Phil, It's quite common with desktop-mapping/GIS system to handle a projected earth with no regard for 180E = 180W. It's common to add an extra bit of the globe, copied from the other side of the world, so that data goes beyond 180degrees in order to give continuity. This is a real fudge since overlaid information (such as a boat position) needs to be adjusted. It's not a specific ESRI problem, MapInfo has no world projections with a variable central meridian either. Regards, Warren Vick Europa Technologies Ltd. http://www.europa-tech.com -Original Message- From: Phil Waight [mailto:[EMAIL PROTECTED] Sent: 21 December 2004 06:00 To: [EMAIL PROTECTED] Subject: MI-L Vendee Globe - around the world , map by Esri Well, if you have an interest in: 1. Sailing 2. Web mapping OR 3. Knowing where the edge of the world is according to Esri and have a few idle minutes, try this: http://www.vendeeglobe.org/uk/classements and click on view map I cannot get the map to show any detail (grid lines, features) East of 180 degrees. So am curious to see what happens in a few days when the lead boats (at 171 east) reach the edge of the world. Do like the wind and boat direction overlay though. Phil.
MI-L Vendee Globe - around the world , map by Esri
Well, if you have an interest in: 1. Sailing 2. Web mapping OR 3. Knowing where the edge of the world is according to Esri and have a few idle minutes, try this: http://www.vendeeglobe.org/uk/classements and click on view map I cannot get the map to show any detail (grid lines, features) East of 180 degrees. So am curious to see what happens in a few days when the lead boats (at 171 east) reach the edge of the world. Do like the wind and boat direction overlay though. Phil.
Re: MI-L Dot NET and the Future of MapInfo Applications
A correction - MapX rowvalue object allows as much attribute manipulation as you would want to do. My issues for MI.NET: 1. The big limitation of MapX (or its environment), was that even after 10 years+? of its existance, the availability of public free or commercial code/libraries for doing simple and complex things is non-existant. So code-snippet sharing via the mi list provided some limited source, but otherwise, I would imagine there are squillions of in-house libraries (or more likely in-app procedures) for doing stuff, all repeating what has been done elsewhere. (cf. MapBasic, where source is readiy available, .MBX are readily available etc.). MapX did allow a Map object to be passed to an OCX or DLL, so not sure why nothing happened in this regard?? One good example of the MapX library deficiency is printing a map - this is a classic case where someone writing a library to handle margins, different paper size, orientation, adding legends, to scale or fixed width etc. etc. would have saved gazillions of man-hr developement in the mapx world. Even if say a generic VB version using SDK calls was available in source form, converting this to other languages for a particular job would be easy compared to writing from scratch. I suspect there are a lot of very average looking MapX output maps sitting on people's desks, simply because it was too time-consuming to do properly. What is going to prevent the MapX code graveyard happening with .NET? 2. I agree, .NET will be great for the current web / mapx developers and many mapbasic applications, building stand-alone applications. I am looking for an answer for the following traditional method of working on the Desktop - Currently, I am sure many people are used to the approach of building a map in MI pro through application of many MBX tools. eg. Add a grid, add a north point, add nice labels. Even big applications are supported by smaller and useful tools to complete the job. It seems that with the classes provided in the MapInfo.Data namespace, two apps can concurrently access a native MI table and with TableAccessToken and events for insert,delete etc., manage concurrent use. Am I reading too much into this or does this really solve the shared MI table problem? After all, the MI tables still represent the fastest way of accessing map data. What are the performance implications (if any) of the ADO.NET implementation of MI native tables? If my understanding is correct, even with MI .NET and a lot of specialised .NET EXEs, the problem you have is the shared map or layout. You build a map in MapInfo Professional .NET. To do anything more, you would need to save a MWS, close everything, run the NorthPoint EXE. which also needs to show a map and have some interaction with the user, save a MWS. Then reopen MWS in MI .NET to do more editing stuff. So, you can (can you?) pass a Map object to another app (as a DLL for eg.)? If say a NorthPoint DLL modifies the map, do the map event handlers trigger in the calling app? Is MIPro.NET going to be smart enough to allow an EXE to fiddle with a map sitting in an open window? 3. Who is going to convert the many useful MapBasic apps to .NET? Who is going to define the interface to make them widely usable? 4. When I come to port MapX applications, are there tools to assist the otherwise tedious exercise? 5. What are the licensing implications of someone say, writing and selling NorthPoint.dll which provides a function call to accept a map object and add a feature object to that map. Does the DLL author need to pay licencing fees, or does the calling app licence cover this. (There are no fees distributing a .MBX). Phil. - Original Message - From: Bill Thoen To: MapInfo-L Sent: Thursday, December 16, 2004 1:57 PM Subject: MI-L Dot NET and the Future of MapInfo Applications In an effort to see where MapInfo is going with this dot-NET thing, I have been fooling around with Microsoft's Visual Studio C# IDE and MapInfo's MapXtreme 2004 free trial package. So far, all I have to say is that this development environment really rocks! I had a few misconceptions about MapXtreme too. Turns out that your MX applications run just fine on the desktop just like any normal local Windows executables (because that's exactly what they are.) I thought you had to do everything via a web server, like it or not. You don't. However, if you DO like building distributed Internet applications, you can run your application over the web too. The core functions are designed to work in either environment. It supports normal *.TAB files, with all the attributes you want (unlike MapX which can't build a TAB file with more than one attribute.) Of course, you also have access to the entire ADO.NET suite of class functions too, so you might want to think about going beyond the old *.TAB file. I wasn't sure of this, but it seems to be true.
Re: MI-L Re: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++
MessageWarren, Appreciate the detailed info you have provided. Regards. - Original Message - From: Warren Vick, Europa Technologies Ltd. To: 'Phil Waight' Cc: [EMAIL PROTECTED] Sent: Friday, November 19, 2004 7:24 PM Subject: RE: MI-L Re: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++ Hello Phil,. I think I can help you with the second part of your query. The error is actually quite a good one but the reason why the warning is produced needs a little background information on how C++ implements OOP. The error is generated because your class has members that are pointers... distance, depotdist and name. Obviously these are assigned or allocated space somewhere in your class methods. The problem is, however, that you do not have a copy constructor or assignment operator method (these are the two the warning complains about). So, with the absence of these, when you construct a copy, or assign, an object of class Gene, a binary copy of the object is made in memory. The danger here is that the pointer values will be copied to the new object and you will end up with two objects which internally have pointers directed to the same space. i.e. change one and the other will change too. This is generally, but not always, undesirable and could cause some nasty bugs which are difficult to track down. The solution is to always have a copy constructor and assignment operation function is your classes. It's generally good OOP practice. As for a dummy's guide to the errors, I'm afraid it's just a case of experience. If it was easy, C++ development wouldn't be regarded as a value skill! Regards, Warren Vick Europa Technologies Ltd. http://www.europa-tech.com -Original Message- From: Phil Waight [mailto:[EMAIL PROTECTED] Sent: 19 November 2004 04:45 To: David Langley Cc: [EMAIL PROTECTED] Subject: MI-L Re: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++ Dave, That change made the code more readable and pointed me in the right direction. I tried the -pedantic switch in gcc. chromo.cc:15: error: ISO C++ forbids array dimensions with parenthesized type in new So: myChromoPool = new pChromo [popSize]; now works in VS. Thanks for the help. I have attached the header file for the other problem if you're able to look at that. Phil. - Original Message - From: David Langley To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Friday, November 19, 2004 9:31 AM Subject: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++ Phill, try using a typedef (a synonym for another type) declaration as a pointer to the Chromo vector i.e typedef Chromo* pChromo ; then change your code to pChromo *myChromoPool ; // Chromosome vector myChromoPool = new (pChromo)[popSize] ; Not sure about the second problem as I would have to see the header file. Best Regards, Dave David P. Langley Director of Programming Services Mapping Solutions, LLC 4660 S. Hagadorn Rd. Suite 120 East Lansing, MI 48823 USA Voice: (+1) 517-332-7735 Cell: (+1) 517-402-3238 Fax: (+1) 517-332-1329 Email: [EMAIL PROTECTED] SMS: 5174023238 (@tmomail.net) Visit our website: www.mappingsolutions.com *** Need inexpensive GDT and NavTech street-level data for North America and Europe? Check out Map-In-A-Box at http://www.mapinabox.com *** *** Map-In-A-Box Year-End Blowout!... Map-In-A-Box is on Sale Until December 31, 2004.. Check out Map-In-A-Box at http://www.mapinabox.com ***
MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++
To: Any c++ programmers who'd care to comment I am a beginner at c++ but have a very useful program written (by others) in gnu c++ which I have worked with for a a while and modified successfully. Now have MS.net VS installed and wanted to port. Alas, compiler errors galore. I've fixed most problems but have what seems to be coding errors in the original program which werent detected by gnu c++. BTW, there is an MSDN article quite critical of standard-conformance in MS.net c++ (ref. cl.exe Episode XIII: Attack of the Standards). Dont know if this is relevant here - probably not. PROBLEM 1: Declaration in class public section in header file is: Chromo **myChromoPool; // Chromosome vector Problem on this line in class definition: myChromoPool = new (Chromo *)[popSize]; The MS error reported is: error C2143 syntax error: missing ';' before '[' popSize is properly declared and assigned. PROBLEM 2: Found the gcc switch -Weffc++ which reports on style problems. This reports: gene.h:15: warning: `class Gene' has pointer data members gene.h:15: warning: but does not override `Gene(const Gene)' gene.h:15: warning: or `operator=(const Gene)' Any clues on what this means? There are no CONST declarations in gene.h, so am guessing there is some sort of implicit declaration. Any references to on-line docs on c++ coding practice or deciphering compiler error messages for dummies? thanks Phil.
MI-L Re: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++
Dave, Thatchange made the code more readableand pointed me in the right direction. I tried the -pedantic switch in gcc. "chromo.cc:15: error: ISO C++ forbids array dimensions with parenthesized typein new" So: myChromoPool = new pChromo [popSize]; now works in VS. Thanks for the help. I have attached the header file for the other problem if you're able to look at that. Phil. - Original Message - From: David Langley To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Friday, November 19, 2004 9:31 AM Subject: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++ Phill,try using a typedef (a synonym for another type) declaration as a pointer to the Chromo vectori.etypedef Chromo* pChromo ;then change your code topChromo *myChromoPool ; // Chromosome vectormyChromoPool = new (pChromo)[popSize] ;Not sure about the second problem as I would have to see the header file.Best Regards,DaveDavid P. LangleyDirector of Programming ServicesMapping Solutions, LLC4660 S. Hagadorn Rd.Suite 120East Lansing, MI 48823USAVoice: (+1) 517-332-7735Cell: (+1) 517-402-3238Fax: (+1) 517-332-1329Email: [EMAIL PROTECTED]SMS: 5174023238 (@tmomail.net)Visit our website: www.mappingsolutions.com*** Need inexpensive GDT and NavTech street-level data for North America and Europe? Check out Map-In-A-Box at http://www.mapinabox.com ** Map-In-A-Box Year-End Blowout!... Map-In-A-Box is on Sale Until December 31, 2004.. Check out Map-In-A-Box at http://www.mapinabox.com *** // gene.h // Declaration of class Gene // Thomas Pederson, 950505 #ifndef GENE #define GENE #include global.h //#include stream.h #include iostream //using namespace std; class Gene { public: Gene(char *_name, coord_t _x, coord_t _y, unsigned int _index, unsigned int _distVecLength, int _pointval, int _depotd);//v1.2 ~Gene(); // Calculates Eucledian distance between this gene and _gene and returns the value. distance_t calculateDistanceTo(coord_t routed, Gene _gene); // store distance from this Gene to depot. distance_t storeDepotDist(coord_t routed, int depotid); // Returns Eucledian distance between this gene and _gene. distance_t distanceTo(Gene _gene); // Returns this gene's index in original chromosome pool. unsigned int getIndex() {return index;} // Returns nearest depot. unsigned int getNearestDepot() {return nearestdepot+1;} // Returns this gene's name. char *getName() {return name;} // Returns this gene's depot counte. int getDepotCnt() {return depotcnt;} // Returns depot distance for this gene. distance_t getDepotDist(int depotid) {return depotdist[depotid];} // store distance from this Gene to depot. distance_t getNearestDepotDist(Gene _gene); // Returns this gene's point value. int getPointVal() {return pointval;} // Prints gene information to stream. friend std::ostream operator(std::ostream outStr, Gene gene); private: distance_t *distance; // distance vector distance_t *depotdist; // depot distance vector unsigned int distVecLength; // length of distance vector char *name; // name of gene coord_t x,y; // gene's coordinates unsigned int index; // gene's index /* v 1.2 Add Depot distance array, Point value (-val = deliver, +val = pickup) */ int depotcnt;// depot count from this point int pointval;// action at point value eg. +3 = pickup 3 bins int nearestdepot;// nearest depot on last check }; #endif - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 14129
Re: MI-L Dead-ends and dangles
spatialSQL (www.acenet.com.au/~pwaight/spatialsql.htm) will locate dead-ends and snap unintended line ends to the road network. The logic is that the free ends operator without an update operator locates ends outside the tolerance (legitimate dead ends). If the tolerance is zero, it will also locate dangle line ends. Free ends with a snap update locates ends within the tolerance and snaps to the network, optionally splitting the snapped-to line at the connect point. Similar approach with points and a line network. Regards. ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight - Original Message - From: Selves, Simon [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, October 26, 2004 6:18 PM Subject: MI-L Dead-ends and dangles Hi All, Does anyone have any idea how to isolate/select Dead_ends (i.e. Cul-de-sacs etc.) in a road network, in Mapinfo? I've tried all sorts of queries, but cannot seem to select either the dead-ends or their inverse. I'm also trying to construct a spatial query to select line objects that are not connected to a continuous network i.e. hanging road segments. Anyone with any ideas? I have a basic knowledge of Mapbasic so am not adverse to running some scripts if necessary. Much obliged for your time. Simon ** This email and any attached files are confidential. They are intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error, please notify the sender by return email, and delete the original. All outgoing emails and attached files are virus scanned, but we do not represent that this email and any attached files are free from computer viruses or other defects. Further, we do not accept any liability for any damage caused by this email or attachments. - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 13825 - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 13838
Re: MI-L tools
Uffe, spatialSQL is US$195, single PC. Price is on the rego screen, but thanks for the reminder - I'll add it to the web page. Phil Waight ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight - Original Message - From: Uffe Kousgaard [EMAIL PROTECTED] To: Phil Waight [EMAIL PROTECTED]; Rob Healy [EMAIL PROTECTED] Cc: Mapinfo-L [EMAIL PROTECTED] Sent: Monday, October 18, 2004 7:09 PM Subject: MI-L tools To Rob Healy and Phil Waight, It looks like some very interesting and impressive tools (spatialSQL and MappaMI) you are doing downunder. Does the price have to be a secret or is it just me, that can't find them at your websites? spatialSQL: www.acenet.com.au/~pwaight/spatialsql.htm MappaMI: www.meridian-gis.com.au Regards Uffe - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 13756
Re: MI-L Polygon Analysis
Darrin, spatialSQL locates region visual centroids (see list emails around 24 Sep 04) www.acenet.com.au/~pwaight/spatialsql.htm There are 2 ways visual centroids are applied in spatialSQL, one from the menu as a free tool and the other embedded in a label declutter function. Phil Waight ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight - Original Message - From: Darrin Clement [EMAIL PROTECTED] To: Mapinfo-L [EMAIL PROTECTED] Sent: Monday, September 13, 2004 11:13 PM Subject: MI-L Polygon Analysis Hello everyone, Is there an efficient way to find the most open part of a polygon? In other words, for odd-shaped polygons, we're trying to find the location that represents the point farthest from any edge. An obvious application would be for the best label placement (rather than the traditional centroid). We could use a least squares method against the nodes for individual polygons but when doing this for hundreds or thousands of polys, such a process is not efficient. Anyone have a tool out there that does this? Thanks. Darrin *** www.maponics.com - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 13284 - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 13719
MI-L spatialSQL v1.50 - region visual centroids
See a definition of region centroids: http://www.acenet.com.au/~pwaight/spatialsql_centroids.htm Implemented to assist label placement: http://www.acenet.com.au/~pwaight/spatialsql_labels.htm Download: http://www.acenet.com.au/~pwaight/spatialsql_download.htm The default and visual centroid function is available from the spatialSQL menu as a free tool. The label functions are available as a 30 day trial. Phil. ___ SPATIAL PROJECTS Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight
MI-L spatialSQL - label declutter
spatialSQL now includes an update to declutter point label maps. This has been included as a productivity tool to remove some of the tedium of manual label editing. It is one step better than the so-called naive method provided by autolabel, and uses a technique which involves shifting an overlapping label to the first available free position of the 8 candidates. It doesnt provide an optimum solution, but pretty much guarantees a better-looking map. It is not quick but faster than I can shift labels around maps. Examples of the positioning problems that are resolved can be seen here: http://www.acenet.com.au/~pwaight/spatialsql.htm and include: 1. Repositioning labels that intersect linear or point features in the same or other layers in the current map. 2. Repositioning labels not shown due to points at the same location. 3. Label shift for all point layers in the current map. 4. Use of leader lines if these are defined in the layer - label control. Quite important when L-R justification cannot be relied on to pick the associated point. Whilst looking for what was about in labelling these days, I noticed that Evername seems to have gone/transformed. The reference desktop labelling product seems to be Label-EZ, but there are quite a few of the GIS developer kits that now seem to have more advanced labelling facilities. Couldnt see anything in mapinfo-l archives on this topic? The web mapping trend seems to be fixed zoom, pre-published map images where the cpu time can be spent in composing good looking maps. oh - and one more vote for anti-aliased labels in MapInfo. Phil.
Re: MI-L Updating fields with functions
Cant answer your specific question re the expression_list portion of a select. Considering the number of other places within SQL statements functions can be used, might be an oversight. Computed fields display and update correctly if based on native functions. (select Left$(cola,5) from ...). Replacing the native function with your own same-named version doesnt help. In other places, a statement such as: Add column tabA (col1) from tabA set to cust_funct(args) where builds a correct result and responds to data changes as long as the program is still running. Possibly because the derived column needs special treatment, it is supported here ONCE but not as a Select computed column. I have used custom functions within spatialSQL (updated version 1.21 now available) and have put a summary here: (http://www.acenet.com.au/~pwaight/spatialsql_custfns.htm) of some of the things I have learned. The page also has test program source for download. Once wiki is going, a topic covering this would be useful as the scope of this hasnt been fully covered in anything I've seen. Phil. - Original Message - From: Bill Thoen [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Sunday, July 11, 2004 2:01 AM Subject: MI-L Updating fields with functions Updating table fields with functions is a much faster techique than stepping through a table record by record to change a field. I was curious to see how far the technique could be stretched and discovered that using a function in a select doesn't seem to work, but in an update, it works fine. Why is this? Anyone know? Here's a test program illustrating the problem: Declare Sub Main Declare Function Reverse (ByVal sName As String) As String Sub Main Dim sFile As String ' Open the States table and build a new table using STATES.State_Name ' passed to a function that returns a string. The string returned from ' that function will be used to populate a temporary table and a ' permanent one. Why does the temporary table not get filled, while ' rows are created? ' Set up and open the source table Close All sFile = FileOpenDlg (, States.Tab, TAB, Please open the STATES table) If sFile = Then Exit Sub End If Open Table sFile As STATES ' This works only rarely (but sometimes it does!) ' Usually all rows are blank. Select Reverse (State_Name) emaN_etatS From STATES Into TEMP NoSelect ' This does work Create Table PERM ( emaN Char(20) ) Insert Into PERM Select Reverse (State_Name) From STATES Commit Table PERM ' View the results Browse * From PERM Browse * From TEMP End Sub Function Reverse ( ByVal sName As String) ' Input string As String ' Returned word spelled backwards 'Reverses letters in a string Dim sRevWord As String Dim i, j As Integer j = Len(sName) For i = j To 1 Step -1 sRevWord = sRevWord + Mid$(sName, i, 1) Next Reverse = sRevWord End Function --- - Bill Thoen - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 12542
Re: MI-L Splitting polylines
spatialSQL has fairly comprehensive functions for snapping and splitting. Lines to lines, points to lines, lines/points to regions, single/multiple tables and with tolerances specified. It also has the ability to produce a topology table with object-object connections that could be used within an application. 30 session free use http://www.acenet.com.au/~pwaight/spatialsql.htm ___ SPATIAL PROJECTS Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, June 21, 2004 6:33 PM Subject: MI-L Splitting polylines Dear list How can I split polylines automatically if I have a point table and a polyline table? The points do not lie exactly on the polylines. How could I do that automatically or do I have it to do manually? I have tried with Polyline Split within MI but got the error message Split with polyline cutters must form contiguous section polyline. Operation canceled. Which tool or function could do that job? I appreciate any help then I have to split several thousand polylines. With kind regards christian christian cattaneo Bundesamt für Verkehr BAV Bollwerk 27/29 CH-3003 Bern e-mail: [EMAIL PROTECTED] oder [EMAIL PROTECTED] tel: +41 31 325 12 78 - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 12308 - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 12327
MI-L CIRCLES, POINTS, LINES,etc. , use of
My opinion on this seems to be at odds with a number of others and is possibly wrong, but anyway it is important to understand the scope limitations of the system we work with . The argument that circles should be avoided as a geographic object is as spurious as connecting any two points with a straight line and using the line as an object. The only time the line is valid in any coordinate space is if it represents a line-of-sight between two surveyed points (and even then, light bends). As soon as it represents a property boundary for example, it is really valid only at its ends. Similarly with a circle, you could possibly say that at the time it is created, the centre and one point on the circumference were legitimate points. In both cases, they are just representations of reality and obviously have their place. If a circle or any object is drawn and used in its native projection system, it is defined and remains true in that cartesian system. How good it represents reality is another issue. So, my argument is the more object types the merrier, as long as they are all treated as the approximations they really are. And bring on more metadata (and metadata analysis tools), so we have good descriptions of how the data can be used. An occasion when circles (and other objects) may be a problem is when reprojected from the system they were originally defined in. For example, all objects distort as they move away from the central meridian of a UTM system. Because circles are modelled as an ellipse within a fixed orientation rectangle, the rotation that occurs, because of the projection maths, off the central meridian cant be represented. The ability of MapInfo to reproject so readily has some mixed blessings. The answer here is to limit use of mixed projections or be aware of limitations and impact on length, area and object relationships. It'd be nice if there were a summary somewhere of this stuff - may be in Wiki eventually. Whilst playing with this, I did notice that the select and display representations of a circle drawn in say UTM and displayed in geographic projection, are different!? This difference is more obvious, the further from the central meridian you go (say 300 km, with a 100km radius). In spite of the issue with circles noted above, this would seem like a bug (in 6.5). Why else would two apparently cosmetic versions (display/select) of a circle be different. It can be reproduced by clicking from the circumference to the centre. The circle doesnt actually get selected until closer to the center than the circumference. Phil.
Re: MI-L returning the coordinates of 2 intersection points of 2 overlapping circles
Jacques, True, but circles as objects are ideal for testing, for example, whether a point is within a given distance from an object of any type. As far as I can tell Circle intersects any_object .tests the circle as a circle not a circular region of current resolution, so by implication will be computed more quickly than a region. Circles are also stored in a compact form (center, 2 radii). Circles for small distance computations are invaluable. For larger distances, circles are of value depending on what they represent and how precise the radius is in the first place. Some of the history of MI objects might be tied to their existance in MS GDI library - viz. circles, arcs, rounded rectangles. When it comes to objects of limited geographic value that relic from the past, the rounded rectangle - has survived into MapXtreme 2004! This does mean there is hope for layouts in MapXtreme though! The list of classes in the geometry namespace in mpx04 is a sight to behold. Trouble is I dont know yet whether to applaud or cringe (at the complexity). Phil. - Original Message - From: Jacques Paris [EMAIL PROTECTED] To: Lawley, Russell S [EMAIL PROTECTED]; [EMAIL PROTECTED] Sent: Saturday, June 12, 2004 1:05 AM Subject: RE: MI-L returning the coordinates of 2 intersection points of 2 overlapping circles It is amazing that people want to handle circles as if they were geographic objects. They do not exist in MI with properly defined contours, just a center and a radius, and they are displayed on the fly with some approximation. Hence, my hesitation to the cartesian space solution; the computed points may not exist really as part of the circles. Before Mi will release information about intersection between a circle and another linear object, it internally transform it (them eventually) to polyline(s) and will find the intersections between resulting objects, These are approximation of the circle shape in a polyline with a number of nodes defined by the Set Resolution statement (by default 100 nodes per circle); in this implicit transformation, the original circles are not modified. The coordinates of the intersections will vary thus for different resolutions, and the corresponding points with not be on the circles except if by chance, each intersection will find itself on a node for both convertedtopline circles. One easy approximation will thus be to do the following Dim oint as object Oint=overlap(circle1,circle2) X and y if the intersections would be Objectgeography(oint, OBJ_GEO_LINEBEGINX) Objectgeography(oint, OBJ_GEO_LINEBEGINY) Objectgeography(oint, OBJ_GEO_LINEENDX) Objectgeography(oint, OBJ_GEO_LINEENDY) One must make sure that an object was created (that there is an intersection) either by testing previously that the distance between the two centers is sum of radii, or by error trapping on the objectgeography function. Notice that the overlap function returns an object defined by its end points (the intersections) of the circles, whereas the intersectnodes() will not work on circles; they will have to be to previously converted explicitly to polylines. A last detail. Experiment with two circles and add the results of the operation to the map. Zoom on one of the extremities; you will most probably see that it is not on any of the original circles. As a general conclusion: never consider circles as geographical objects and process them thinking that are precise. Jacques Paris e-mail [EMAIL PROTECTED] MapBasic-MapInfo support http://www.paris-pc-gis.com -Original Message- From: Lawley, Russell S [mailto:[EMAIL PROTECTED] Sent: 11-Jun-04 09:01 To: [EMAIL PROTECTED] Subject: RE: MI-L returning the coordinates of 2 intersection points of 2 overlapping circles Erin, you should look at the intersectsnodes function (if you are using Mapbasic). this will return a polyline for two intersecting ellipses, the start and end points of which will define the coordinates of the two 'crossing points'. (use the objectinfo or objectgeography functions for finding these values from teh line) regards r * This e-mail message, and any files transmitted with it, are confidential and intended solely for the use of the addressee. If this message was not addressed to you, you have received it in error and any copying, distribution or other use of any part of it is strictly prohibited. Any views or opinions presented are solely those of the sender and do not necessarily represent those of the British Geological Survey. The security of e-mail communication cannot be guaranteed and the BGS accepts no liability for claims arising as a result of the use of this medium to transmit messages from or to the BGS. .http://www.bgs.ac.uk
Re: MI-L RE: Buffering query - v2
I think the general problem is called the Geodesic ham sandwich. A reference is: www-ma2.upc.es/~hurtado/ham.pdf. I didnt understand the words in this paper but fortunately there are pictures. So with any 2 regions that may or may not intersect, itspossible to find a median line string which you could then use to reform the regions. I think you are right in that buried in a Voronoi diagram of all the points might be a solution. But how do you find it? (In cases of sets of points from circles it might be easier, but what about regions). Next question is Is there another solution using good old trusty MapInfo buffers and a lot of cpu cycles? ps. I googleflopped on the search: MapInfo ham sandwich. Phil. - Original Message - From: Robert Crossley [EMAIL PROTECTED] To: Apers Mathieu [EMAIL PROTECTED] Cc: MapInfo List [EMAIL PROTECTED] Sent: Monday, May 31, 2004 9:07 AM Subject: Re: MI-L RE: Buffering query - v2 Mathieu, From your comment, I'd imagine that what you are after is the equivalent of a cross between buffers and veroni polygons for points, that is a buffer that follows the mid-line between two polygons if they are less than two buffer widths apart. I posted a question about this a while ago and did not get any good leads. I would actually be interested in making such a tool, but could not think of an efficient way of proceeding with this. One thought was to drop the polygons to constituent points and create veroni polygons of the points. It did not work for points which were coincident. I really did not spend much time on it, so would be interested in thoughts. As I write this, some new ideas are emerging from the weekend murk. BTW, most of the object commands are available throught the objects menu in MapInfo. MapBasic generally justs automates these. r On Mon, 31 May 2004 10:08:47 +1200, Apers Mathieu [EMAIL PROTECTED] wrote: ok so it won't let me attach Doc files either (or PDFs). i give up. -Original Message- From: Apers Mathieu [mailto:[EMAIL PROTECTED] Sent: Monday, 31 May 2004 10:07 AM To: 'Mapinfo help forum (E-mail)' Subject: RE: MI-L RE: Buffering query - v2 Thanks to those of you who replied - unfortunately for me, i have no practical knowledge of Mapbasic and hence wouldn't have the foggiest idea of how to use Intersectnodes in Mapbasic, and i need seperate buffers for each object so one buffer for all objects wouldn't work either. See attached file: I would have thought there'd be a function that builds buffers like this, 'cause surely I'm not the only one who needs to buffer objects and have the buffers meet but not overlap??? TIA Cheers Mathieu This email with any attachments is confidential and may be subject to legal privilege. If it is not intended for you please reply immediately, destroy it and do not copy, disclose or use it in any way. This email with any attachments is confidential and may be subject to legal privilege. If it is not intended for you please reply immediately, destroy it and do not copy, disclose or use it in any way. - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 11961 -- Robert Crossley Agtrix P/L 9 Short St PO Box 63 New Brighton 2483 Far Southern Queensland AUSTRALIA 153.549004 E 28.517344 S P: 02 6680 1309 F: New Connection M: 0419 718 642 E: [EMAIL PROTECTED] W: www.agtrix.com W: www.wotzhere.com - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 11962
Re: MI-L MI6.5: 'LINEobject INTERSECTS POINTobject' actually evaluated as 'MBR(LINEobject) INTERSECTS POINTobject'
Sorry Lars, I did wander - and mostly off the subject. 1. There appears to be a bug in MapInfo pro v6.5 with line objects, point objects and intersect operator. 2. I believe MapInfo could do a point on line intersect where the point lies between node points. (It doesnt currently). 3. If anybody believes the bug in 1 is not a bug, there is at the very least an inconsistency with the way lines and polylines are treated . 4. The not intersects case between point and line could well be used regularly in some areas and thus should be drawn to people's attention. Phil. - Original Message - From: Lars V. Nielsen (GisPro) [EMAIL PROTECTED] To: Phil Waight [EMAIL PROTECTED] Sent: Monday, May 10, 2004 1:49 AM Subject: Re: MI-L MI6.5: 'LINEobject INTERSECTS POINTobject' actually evaluated as 'MBR(LINEobject) INTERSECTS POINTobject' Hi Phil, I'm afraid you totally lost me here. I'm not sure whether there is something in it for me to answer ? I wasn't critizicing anyone or anything, just pointing out that in MapInfo Pro (1) simple lines are ok and (2) arcs et.al. cannot really be used for spatial operations. The founders of MapInfo (and thus the data model) probably had some good reasons why they chose to implement things the way they did. I'm certainly aware that other curves than straight lines are of interest in mapping, but that's a purely theoretical discussion when considering MapInfo. We have judicial boundaries defined as circle arcs here in Denmark, which make perfect sense, but handling those adequatly in MapInfo is a pain sometimes. Usually they just get converted to polylines and regions with some sort of measure of precision. The only item that bugs me in your reply is the talk about the definition of a straight line is. This is much too theoretical for anyone doing real down-to-earth work imho. If the end points are expressed in some projected coordinate system, the straight line is always calculated as if the projection grid was flattened. No great circles or geodesics come into considerations there at all! If your reference system is lat-long, geodesics are your answer, great circles are just handy approximations. It should be obvious from this that I'm not a subscriber to the limitless discussions on such subjects accompanying GML v.3 ;-) Best regards/Med venlig hilsen Lars V. Nielsen GisPro, Denmark http://www.gispro.dk/ http://www.gispro.biz/ - Original Message - From: Phil Waight [EMAIL PROTECTED] To: Lars V. Nielsen (GisPro) [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Sunday, May 09, 2004 3:13 AM Subject: Re: MI-L MI6.5: 'LINEobject INTERSECTS POINTobject' actually evaluated as 'MBR(LINEobject) INTERSECTS POINTobject' Lars, There's no doubt that 'truth' is relative to your frame of reference - water views to a real estate agent might amount to potholes in the street on a rainy day, my up is your down, religion, politics (sigh) and the only time a point is really on a line is if sitting astride a barbed wire fence. So, maybe the best we can ever hope for is consistency?? In this case: Let's say you have a cable network layer and a junction box layer. Built properly in the GIS, a box intended to be shown as connected to the network will be snapped to one of the line mid/end points on the layer. Incomplete portions of the network will have boxes floating. We want an SQL to find all junction boxes connected to the network: Select JunctionBoxes where JunctionBoxes.obj intersects any(select obj from cables) , the result is correct for a cable network of polylines and unpredicable for a network with lines in it. (a junction box not connected to the network will be selected because it is within the MBR of one line) -- -- --- Point on Line is an interesting one. A definition of a line in the digital world (cartesian system) could be: 1. a straight line connecting 2 points in a grid space. The grid space is defined by the stored precision of the coordinate system you are using (approx 4 cm for an unbounded lat/long coordsys). AND 2. A thickness represented by a buffer of width (half-width?) of the precision of the coordinate system. thickness means that operations on the line are performed on a region of this thickness. The point is that a program could place a point on a line as long as it was on or within the buffer (in pt 2) and a program could test for point on line without needing an artificial point created on the line. Regardless of the precision of the coordinate system you are working with : 2 bits, 32, 64 etc, the same approach applies. (The beauty of MI is that the Float data type has a few extra significant digits than the stored coord, so testing for within the line 'thickness' ought to be simple - of course, the actual thickness is known but arbitrarily small
Re: MI-L MI6.5: 'LINEobject INTERSECTS POINTobject' actually evaluated as 'MBR(LINEobject) INTERSECTS POINTobject'
Lars, There's no doubt that 'truth' is relative to your frame of reference - water views to a real estate agent might amount to potholes in the street on a rainy day, my up is your down, religion, politics (sigh) and the only time a point is really on a line is if sitting astride a barbed wire fence. So, maybe the best we can ever hope for is consistency?? In this case: Let's say you have a cable network layer and a junction box layer. Built properly in the GIS, a box intended to be shown as connected to the network will be snapped to one of the line mid/end points on the layer. Incomplete portions of the network will have boxes floating. We want an SQL to find all junction boxes connected to the network: Select JunctionBoxes where JunctionBoxes.obj intersects any(select obj from cables) , the result is correct for a cable network of polylines and unpredicable for a network with lines in it. (a junction box not connected to the network will be selected because it is within the MBR of one line) --- Point on Line is an interesting one. A definition of a line in the digital world (cartesian system) could be: 1. a straight line connecting 2 points in a grid space. The grid space is defined by the stored precision of the coordinate system you are using (approx 4 cm for an unbounded lat/long coordsys). AND 2. A thickness represented by a buffer of width (half-width?) of the precision of the coordinate system. thickness means that operations on the line are performed on a region of this thickness. The point is that a program could place a point on a line as long as it was on or within the buffer (in pt 2) and a program could test for point on line without needing an artificial point created on the line. Regardless of the precision of the coordinate system you are working with : 2 bits, 32, 64 etc, the same approach applies. (The beauty of MI is that the Float data type has a few extra significant digits than the stored coord, so testing for within the line 'thickness' ought to be simple - of course, the actual thickness is known but arbitrarily small). To take my pedantry one step further: If you have 2 points on the surface of the earth and a straight line between them, this line is strictly only defined by the end points and the fact that the connecting arc is a great circle. Placement of a point on the line between the ends should be a mathematical placement of the point which meets the line definition above (for spherical geometry). As soon as you create an artificial intermediate node in the line, the line direction (and definition) changes because of snapping to the nearest point (in the grid space). --- From a practical point-of-view there is no reason why a point cant lie on a line between nodes. --- Discussion of coordinate systems and precision confirms my thinking that MapInfo designers decision on 32 bit precision for stored coordinates with their use of bounds was a masterstroke. The performance benefits significantly outweigh any perceived artificial benefit of greater stored coordinate precision. (In the case above, the only relevance of precision is knowing what it is!) Often, when we criticize MapInfo technology I think it tends to be somewhat nitpicky stuff or things that could be fixed in the next rev. The important thing is that the foundations are so good. I might conclude my ramble now but a topic for another day is why arcs and ellipses (parametrically defined objects) should not be poor cousins to points, lines and regions. Phil. - Original Message - From: Lars V. Nielsen (GisPro) [EMAIL PROTECTED] To: Phil Waight [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Saturday, May 08, 2004 7:04 PM Subject: Re: MI-L MI6.5: 'LINEobject INTERSECTS POINTobject' actually evaluated as 'MBR(LINEobject) INTERSECTS POINTobject' Hi Phil, It's not quite as simple as that. In my opinion, the result of an intersect operation between a line and a point is really logically undefined, regardless of the respective positions of the line and the point. If it works that's great, but I wouldn't depend on it. Sort of like the case with the draw order of geographically identical objects. But if your assumption holds, two simple lines (for which an intersection is definitely defined logically), which have overlapping MBR's but not an actual intersection, should yield True when querying with intersects. But it doesn't. dim lineobj1 as object dim lineobj2 as object set coordsys nonearth units m bounds (-10,-10)(10,10) create line into variable lineobj1 (0,0) (1,1) create line into variable lineobj2 (1,0) (0.6,0.4) print str$(lineobj1 intersects lineobj2
MI-L MI6.5: 'LINEobject INTERSECTS POINTobject' actually evaluated as 'MBR(LINEobject) INTERSECTS POINTobject'
List, Further to a previous email on arc objects not behaving well with spatial operators . A LINE object seems to be treated as an MBR of itself during an intersect test with a POINT object. ' set coordsys earth dim lineobj as object dim plineobj as object dim otherobj as object dim pointobj as object dim point_on_lineobj as object create line into variable lineobj (0,0) (1,1) create pline into variable plineobj 2 (0,0) (1,1) create point into variable point_on_lineobj (0.6,0.6) create point into variable pointobj (0.5,0.7) ' any point not on line but within MBR create pline into variable otherobj 2 (0.5,0.7) (0.5,0.8) ' another obj not on line but within MBR print Should evaluate FALSE: + str$(lineobj intersects pointobj)' FAILS print Should evaluate FALSE: + str$(plineobj intersects pointobj) print Should evaluate TRUE: + str$(plineobj intersects point_on_lineobj) print Should evaluate FALSE: + str$(lineobj intersects otherobj) ' As in the case of the ARC object, the workaround is to use CONVERTTOPLINE(lineobj) first. Phil.
MI-L Product announcement: spatialSQL for MapInfo Professional (Beta version)
spatialSQL provides advanced spatial SQL with operators such as: within, beyond, within and beyond, touches, disjoint, equals. Simultaneous update through a set of update operators (combine, delete,..). A proximity qualifier allows 'direction' to be defined. (eg. all residents on North side of highway xx within 500 metres). The help file provides usage instructions. Information at: http://www.acenet.com.au/~pwaight/spatialsql.htm Download: http://www.acenet.com.au/~pwaight/spatialsql_download.htm Phil. ___ SPATIAL PROJECTS 61 Burradoo Rd Burradoo NSW 2576 Australia Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight
Re: MI-L MI6.5: Arc objects and INTERSECTS operator
Thanks to all who responded to this and for the solution 'converttopline()'. With a table of mixed object types, it would be necessary to do an initial select of the arcs and convert them before running an SQL, or process within a MB program. It would be nice to have an additional set of functions returning objects which ignored object errors and returned the original [i.e. convertAnytoPline(point1) returns point1]. I checked a couple of docs and - MapX CreateArc returns a line feature and there is no equivalent to converttopline() in MapX. The OpenGIS feature type spec (1999) has a CURVE as a point list but no arc. So looks like arc will remain just a drawing mechanism. Phil. - Original Message - From: Jacques Paris [EMAIL PROTECTED] To: Phil Waight [EMAIL PROTECTED] Sent: Monday, April 19, 2004 12:24 PM Subject: RE: MI-L MI6.5: Arc objects and INTERSECTS operator Phil, Arc, ellipse and rectangle are weird objects because they are not defined as regular objects with nodes etc. Try converting them to regular objects before handling them Select where converttopline(arc1) intersects converttopline(arc2) Jacques Paris e-mail [EMAIL PROTECTED] MapBasic-MapInfo support http://www.paris-pc-gis.com -Original Message- From: Phil Waight [mailto:[EMAIL PROTECTED] Sent: 18-Apr-04 19:42 To: [EMAIL PROTECTED] Subject: MI-L MI6.5: Arc objects and INTERSECTS operator List, I cant get the INTERSECTS operator to work with arcs in MI 6.5, within an SQL statement or as a standalone expression. Whether the arcs cross, duplicate one another or do not intersect, the intersects operator always returns False. If this is true, must be an indication of the popularity of the arc object. Other obscure object types seem to work ok. My projection is lat/long and drwg units are km. dim o1 as object dim o2 as object ' 1. draw 2 intersecting arcs ' 2. select first arc fetch first from selection o1 = selection.obj ' 3. select second arc fetch first from selection o2 = selection.obj ' following always returns FALSE regardless of intersect geometry of 2 arcs print o1 intersects o2 Phil. ___ SPATIAL PROJECTS 61 Burradoo Rd Burradoo NSW 2576 Australia Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 11443
MI-L MI6.5: Arc objects and INTERSECTS operator
List, I cant get the INTERSECTS operator to work with arcs in MI 6.5, within an SQL statement or as a standalone expression. Whether the arcs cross, duplicate one another or do not intersect, the intersects operator always returns False. If this is true, must be an indication of the popularity of the arc object. Other obscure object types seem to work ok. My projection is lat/long and drwg units are km. dim o1 as object dim o2 as object ' 1. draw 2 intersecting arcs ' 2. select first arc fetch first from selection o1 = selection.obj ' 3. select second arc fetch first from selection o2 = selection.obj ' following always returns FALSE regardless of intersect geometry of 2 arcs print o1 intersects o2 Phil. ___ SPATIAL PROJECTS 61 Burradoo Rd Burradoo NSW 2576 Australia Ph (61)02 48617977 0418 647697 Fx (61)02 48617977 Email : [EMAIL PROTECTED] Web: www.acenet.com.au/~pwaight
Re: MI-L Where to find symbols as BMP's?
I couldn't agree more that decent / well organised symbol sets (either bitmap or TTF style) seem to be in short supply. My main issue with the current set in MapInfo / MapX is that they are poorly presented / classified, not so much that they couldnt cover most of my or my customer's requirements. When I went searching for standards/symbol sets, I had the same result as you - not much seems to have been done. However, geologists seem to have their act together with good sets and standards. So here are my findings in no particular order. Some of the references below may have sufficient quality graphics that you could turn them into BMPs with some very tedious work. 1.. I dont think I was able to find downloadable TTFs on the ESRI site, but this link http://moorstation.org/typoasis/designers/esri/index.htm has 8 Esri fonts. 2.. Downloading and installing ArcPad (free) gives you sets of free fonts, but it was a while ago and cant comment on the quality. 3.. USGS symbol standards for topo maps are presented here: http://www.mytopo.com/background_topo.cfm, but these are mainly areal fill patterns rather than point symbols - would be nice to have in MI one day though. 4.. Exhaustive geology symbol standards/definitions here ... http://ncgmp.usgs.gov/fgdc_gds/mapsymb/mapsymbpdfs.html These have great detail, but has someone created these region/line/point styles for MapInfo? 5.. This is a good study reference on symbol types and application http://atlas.gc.ca/site/english/learning_resources/carto/symbol.html 6.. This link is referred to in a number of places and so must have had something useful in it at some stage http://www.maps4u.com/ref/symbology/usgs but no longer exists. Possibly the content exists elsewhere now?? 7.. Installing software such as CorelDraw gives you a wealth of fonts. 8.. My last version of LayMan (http://www.acenet.com.au/~pwaight/layman_whatsnew.htm) addressed 2 shortcomings of standard symbol use in MapInfo, organisation (groups symbols by a classification and allows sorting by font name or class) and speed of use (browsing and picking) whilst editing a map. Phil. - Original Message - From: Mickey Feldman [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, March 24, 2004 7:28 AM Subject: MI-L Where to find symbols as BMP's? Hi list, I have literally thousands of bmp's for button glyphs, icons, etc, but very few of them are appropriate symbols for map point data. I'm just looking for ordinary stuff like schools, fire stations, hotels, etc. My googling for this brought up that this same question that was asked a few months back, but apparently the only response pointed to ESRI's TTF symbols. These are OK, but limited and just black and white. I really want bmp's. Surely there must be a collection of these out there somewhere? TIA -- Mickey Feldman [EMAIL PROTECTED] - List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 11045