Getting attributes of intersected polygons using PostGIS The Next CEO of Stack OverflowST_Intersection: Intersection of all geometries in a tableHow to get smallest line segments from intersection + difference of multiple overlapping lines?Separate polygons based on intersection using PostGISNearest Neighbor calculation in PostGIS?How to use ST_Intersection?Identifying topological relationships using PostGISAdjusting polygons to boundary and filling holesStrange behavior of of ST_Intersects in PostGISHow to use St_intersects with different geometry typeHow to get all attributes from overlapping polygons with identical geometry into one single polygon in QGISPostgis : separate nested polygonsPostGIS query to split a polygon by n other polygons

At which OSI layer a user-generated data resides?

Anatomically Correct Strange Women In Ponds Distributing Swords

What was the first Unix version to run on a microcomputer?

On model categories where every object is bifibrant

Would a galaxy be visible from outside, but nearby?

Hindi speaking tourist to UK from India

Why does the UK parliament need a vote on the political declaration?

How did people program for Consoles with multiple CPUs?

Why does standard notation not preserve intervals (visually)

If a black hole is created from light, can this black hole then move at speed of light?

What benefits would be gained by using human laborers instead of drones in deep sea mining?

Can I equip Skullclamp on a creature I am sacrificing?

What's the best way to handle refactoring a big file?

Is there a difference between "Fahrstuhl" and "Aufzug"

Keeping you safe

Inappropriate reference requests from Journal reviewers

What exact does MIB represent in SNMP? How is it different from OID?

Return the Closest Prime Number

Was a professor correct to chastise me for writing "Prof. X" rather than "Professor X"?

Is it possible to search for a directory/file combination?

Won the lottery - how do I keep the money?

Workaholic Formal/Informal

Why didn't Khan get resurrected in the Genesis Explosion?

What happened in Rome, when the western empire "fell"?



Getting attributes of intersected polygons using PostGIS



The Next CEO of Stack OverflowST_Intersection: Intersection of all geometries in a tableHow to get smallest line segments from intersection + difference of multiple overlapping lines?Separate polygons based on intersection using PostGISNearest Neighbor calculation in PostGIS?How to use ST_Intersection?Identifying topological relationships using PostGISAdjusting polygons to boundary and filling holesStrange behavior of of ST_Intersects in PostGISHow to use St_intersects with different geometry typeHow to get all attributes from overlapping polygons with identical geometry into one single polygon in QGISPostgis : separate nested polygonsPostGIS query to split a polygon by n other polygons










3















I have a PostGIS table containing about 50,000 polygons and some of them are overlapping.



I'm trying to use PostGIS to return a table with all the Intersecting parts of the polygons along with some of the attributes of the original polygons.



To get the Intersecting parts table (table (b) in the figure below), I use this script (Similar to the solution here):



SELECT (ST_intersection(a.geom, b.geom)) 
INTO Intersecting_parts _table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


THE PROBLEM I'M STRUGGLING WITH:



I want the table with the intersecting parts (table b) to hold attributes from the original polygons, so anyone exploring new table can retrace the intersection to the originals. Furthermore, database-wise, I know it is better to put these attributes in a new relationship-table, and not in table b).



The process and table schematics:
The process and table schematics



So, I've put in the figure below a schematic of the new table I want to create (table (c)).
I tried doing this:



SELECT ST_intersection(a.geom, b.geom), a.*
INTO Intersecting_parts_table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


But of course – In the simple case although there were only 2 intersecting polygons, it returns only the attributes of one of them, randomly, which clearly does not meet my needs.



But, I think I'm stuck in the basic understanding:



It seems to me that as the ST_Intersection geographic operator (and ST_Overlaps, ST_Intersects and so on) works on whole tables, they are not the answer. They can't return attributes from two polygons at once (or I don't understand how to do it).



I tried extracting the attributes using a point derived from ST_PointOnSurface (and not ST_centroid), but didn't get very far with it).



I'm using PostGIS 2.3 and PostgreSQL 9.6.1.










share|improve this question
























  • gis.stackexchange.com/questions/186242/…

    – Cyril
    11 hours ago















3















I have a PostGIS table containing about 50,000 polygons and some of them are overlapping.



I'm trying to use PostGIS to return a table with all the Intersecting parts of the polygons along with some of the attributes of the original polygons.



To get the Intersecting parts table (table (b) in the figure below), I use this script (Similar to the solution here):



SELECT (ST_intersection(a.geom, b.geom)) 
INTO Intersecting_parts _table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


THE PROBLEM I'M STRUGGLING WITH:



I want the table with the intersecting parts (table b) to hold attributes from the original polygons, so anyone exploring new table can retrace the intersection to the originals. Furthermore, database-wise, I know it is better to put these attributes in a new relationship-table, and not in table b).



The process and table schematics:
The process and table schematics



So, I've put in the figure below a schematic of the new table I want to create (table (c)).
I tried doing this:



SELECT ST_intersection(a.geom, b.geom), a.*
INTO Intersecting_parts_table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


But of course – In the simple case although there were only 2 intersecting polygons, it returns only the attributes of one of them, randomly, which clearly does not meet my needs.



But, I think I'm stuck in the basic understanding:



It seems to me that as the ST_Intersection geographic operator (and ST_Overlaps, ST_Intersects and so on) works on whole tables, they are not the answer. They can't return attributes from two polygons at once (or I don't understand how to do it).



I tried extracting the attributes using a point derived from ST_PointOnSurface (and not ST_centroid), but didn't get very far with it).



I'm using PostGIS 2.3 and PostgreSQL 9.6.1.










share|improve this question
























  • gis.stackexchange.com/questions/186242/…

    – Cyril
    11 hours ago













3












3








3


1






I have a PostGIS table containing about 50,000 polygons and some of them are overlapping.



I'm trying to use PostGIS to return a table with all the Intersecting parts of the polygons along with some of the attributes of the original polygons.



To get the Intersecting parts table (table (b) in the figure below), I use this script (Similar to the solution here):



SELECT (ST_intersection(a.geom, b.geom)) 
INTO Intersecting_parts _table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


THE PROBLEM I'M STRUGGLING WITH:



I want the table with the intersecting parts (table b) to hold attributes from the original polygons, so anyone exploring new table can retrace the intersection to the originals. Furthermore, database-wise, I know it is better to put these attributes in a new relationship-table, and not in table b).



The process and table schematics:
The process and table schematics



So, I've put in the figure below a schematic of the new table I want to create (table (c)).
I tried doing this:



SELECT ST_intersection(a.geom, b.geom), a.*
INTO Intersecting_parts_table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


But of course – In the simple case although there were only 2 intersecting polygons, it returns only the attributes of one of them, randomly, which clearly does not meet my needs.



But, I think I'm stuck in the basic understanding:



It seems to me that as the ST_Intersection geographic operator (and ST_Overlaps, ST_Intersects and so on) works on whole tables, they are not the answer. They can't return attributes from two polygons at once (or I don't understand how to do it).



I tried extracting the attributes using a point derived from ST_PointOnSurface (and not ST_centroid), but didn't get very far with it).



I'm using PostGIS 2.3 and PostgreSQL 9.6.1.










share|improve this question
















I have a PostGIS table containing about 50,000 polygons and some of them are overlapping.



I'm trying to use PostGIS to return a table with all the Intersecting parts of the polygons along with some of the attributes of the original polygons.



To get the Intersecting parts table (table (b) in the figure below), I use this script (Similar to the solution here):



SELECT (ST_intersection(a.geom, b.geom)) 
INTO Intersecting_parts _table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


THE PROBLEM I'M STRUGGLING WITH:



I want the table with the intersecting parts (table b) to hold attributes from the original polygons, so anyone exploring new table can retrace the intersection to the originals. Furthermore, database-wise, I know it is better to put these attributes in a new relationship-table, and not in table b).



The process and table schematics:
The process and table schematics



So, I've put in the figure below a schematic of the new table I want to create (table (c)).
I tried doing this:



SELECT ST_intersection(a.geom, b.geom), a.*
INTO Intersecting_parts_table
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


But of course – In the simple case although there were only 2 intersecting polygons, it returns only the attributes of one of them, randomly, which clearly does not meet my needs.



But, I think I'm stuck in the basic understanding:



It seems to me that as the ST_Intersection geographic operator (and ST_Overlaps, ST_Intersects and so on) works on whole tables, they are not the answer. They can't return attributes from two polygons at once (or I don't understand how to do it).



I tried extracting the attributes using a point derived from ST_PointOnSurface (and not ST_centroid), but didn't get very far with it).



I'm using PostGIS 2.3 and PostgreSQL 9.6.1.







postgis polygon attribute-table intersection overlapping-features






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday









JGH

13.3k21139




13.3k21139










asked yesterday









jonatrjonatr

1,85053051




1,85053051












  • gis.stackexchange.com/questions/186242/…

    – Cyril
    11 hours ago

















  • gis.stackexchange.com/questions/186242/…

    – Cyril
    11 hours ago
















gis.stackexchange.com/questions/186242/…

– Cyril
11 hours ago





gis.stackexchange.com/questions/186242/…

– Cyril
11 hours ago










1 Answer
1






active

oldest

votes


















3














The query used to find the intersection adds the clause WHERE a.id < b.id to ensure that an intersection between two polygons is reported once only (A intersects B, and ignores B intersects A).



It is invalid to consider an intersections as being related to a single polygon... they must include two polygons.



It is important to note that since st_intersects returns a boolean, using it in the JOIN clause allows retrieving the complete rows from the two tables, just like a join on id1 = id2.



What you can do is to record the involved polygons IDs while computing the intersection:



SELECT ST_intersection(a.geom, b.geom), a.id as id1, b.id as id2
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


It is then easy to join on the original data to get more information about the original polygon.



To produce the table having one source polygon per row, you can union two joins on the source table.



In pseudo code:



SELECT inter_section.name, source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id1 = source.id
UNION
SELECT inter_section.name,source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id2 = source.id





share|improve this answer

























  • I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

    – jonatr
    yesterday











  • As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

    – JGH
    yesterday











Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317004%2fgetting-attributes-of-intersected-polygons-using-postgis%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














The query used to find the intersection adds the clause WHERE a.id < b.id to ensure that an intersection between two polygons is reported once only (A intersects B, and ignores B intersects A).



It is invalid to consider an intersections as being related to a single polygon... they must include two polygons.



It is important to note that since st_intersects returns a boolean, using it in the JOIN clause allows retrieving the complete rows from the two tables, just like a join on id1 = id2.



What you can do is to record the involved polygons IDs while computing the intersection:



SELECT ST_intersection(a.geom, b.geom), a.id as id1, b.id as id2
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


It is then easy to join on the original data to get more information about the original polygon.



To produce the table having one source polygon per row, you can union two joins on the source table.



In pseudo code:



SELECT inter_section.name, source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id1 = source.id
UNION
SELECT inter_section.name,source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id2 = source.id





share|improve this answer

























  • I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

    – jonatr
    yesterday











  • As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

    – JGH
    yesterday















3














The query used to find the intersection adds the clause WHERE a.id < b.id to ensure that an intersection between two polygons is reported once only (A intersects B, and ignores B intersects A).



It is invalid to consider an intersections as being related to a single polygon... they must include two polygons.



It is important to note that since st_intersects returns a boolean, using it in the JOIN clause allows retrieving the complete rows from the two tables, just like a join on id1 = id2.



What you can do is to record the involved polygons IDs while computing the intersection:



SELECT ST_intersection(a.geom, b.geom), a.id as id1, b.id as id2
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


It is then easy to join on the original data to get more information about the original polygon.



To produce the table having one source polygon per row, you can union two joins on the source table.



In pseudo code:



SELECT inter_section.name, source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id1 = source.id
UNION
SELECT inter_section.name,source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id2 = source.id





share|improve this answer

























  • I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

    – jonatr
    yesterday











  • As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

    – JGH
    yesterday













3












3








3







The query used to find the intersection adds the clause WHERE a.id < b.id to ensure that an intersection between two polygons is reported once only (A intersects B, and ignores B intersects A).



It is invalid to consider an intersections as being related to a single polygon... they must include two polygons.



It is important to note that since st_intersects returns a boolean, using it in the JOIN clause allows retrieving the complete rows from the two tables, just like a join on id1 = id2.



What you can do is to record the involved polygons IDs while computing the intersection:



SELECT ST_intersection(a.geom, b.geom), a.id as id1, b.id as id2
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


It is then easy to join on the original data to get more information about the original polygon.



To produce the table having one source polygon per row, you can union two joins on the source table.



In pseudo code:



SELECT inter_section.name, source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id1 = source.id
UNION
SELECT inter_section.name,source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id2 = source.id





share|improve this answer















The query used to find the intersection adds the clause WHERE a.id < b.id to ensure that an intersection between two polygons is reported once only (A intersects B, and ignores B intersects A).



It is invalid to consider an intersections as being related to a single polygon... they must include two polygons.



It is important to note that since st_intersects returns a boolean, using it in the JOIN clause allows retrieving the complete rows from the two tables, just like a join on id1 = id2.



What you can do is to record the involved polygons IDs while computing the intersection:



SELECT ST_intersection(a.geom, b.geom), a.id as id1, b.id as id2
FROM t1 a
INNER JOIN t1 b ON ST_Intersects (a.geom,b.geom)
WHERE a.id < b.id


It is then easy to join on the original data to get more information about the original polygon.



To produce the table having one source polygon per row, you can union two joins on the source table.



In pseudo code:



SELECT inter_section.name, source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id1 = source.id
UNION
SELECT inter_section.name,source.id, source.pop
FROM inter_section
JOIN source ON inter_section.id2 = source.id






share|improve this answer














share|improve this answer



share|improve this answer








edited yesterday

























answered yesterday









JGHJGH

13.3k21139




13.3k21139












  • I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

    – jonatr
    yesterday











  • As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

    – JGH
    yesterday

















  • I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

    – jonatr
    yesterday











  • As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

    – JGH
    yesterday
















I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

– jonatr
yesterday





I didn't understand the pseudo-code part, as my join is based on spatial relationships, not on a id... if I do a "regular join" based on a field, each inter_section hold the ID of two polygons...

– jonatr
yesterday













As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

– JGH
yesterday





As per the approach in your question, you would do it in two steps: 1) compute the intersection and record the 2 involved polygon ID and 2) join this table of intersection, by ID, to the source table

– JGH
yesterday

















draft saved

draft discarded
















































Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317004%2fgetting-attributes-of-intersected-polygons-using-postgis%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221

Creating closest line along the point''s azimuth using PostgreSQL Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Drawing line between points at specific distance in PostGIS?How to efficiently find the closest point over the dateline?How to find the nearest point by using PostGIS function?PostGIS nearest point with LATERAL JOIN in PostgreSQL 9.3+Creating a table and inserting selected streets using plpgsql functionsCreating a table that stores Distances and other columnSaving select query results (year wise) from PostgreSQL/PostGIS to text filesWhat is the information behind this geometry?How to give start and end vertex ids dynamically in pgr_dijkstra?Point to Polygon nearest distance DS_distance is not using geography index & knn <-> or <#> does not give result in orderLine to point conversion with start point and end point detection?

Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given